大話資料結構22 幾種常見的靜態查詢演算法

2021-10-17 08:52:44 字數 1983 閱讀 9234

針對順序表進行的查詢

順序查詢

插值查詢

#include

"stdio.h"

#include

"stdlib.h"

#include

"io.h"

#include

"math.h"

#include

"time.h"

#define ok 1

#define error 0

#define true 1

#define false 0

#define maxsize 100

/* 儲存空間初始分配量 */

typedef

int status;

/* status是函式的型別,其值是函式結果狀態**,如ok等 */

int f[

100]

;/* 斐波那契數列 */

//無序哨兵順序查詢

intsequential_search

(int

* a,

int n,

int key)

return0;

}//有哨兵順序查詢

intsequential_search2

(int

* a,

int n,

int key)

return i;

}//折半查詢

intbinary_search

(int

* a,

int n,

int key)

}return0;

}//插值查詢

intinterpolation_search

(int

* a,

int n,

int key)

return0;

}///* 斐波那契查詢 */

/* 斐波那契查詢 */

intfibonacci_search

(int

* a,

int n,

int key)

else

if(key > a[mid]

)else

}return0;

}int

main

(void);

for(i =

0; i <= maxsize; i++

) result =

sequential_search

(a, maxsize, maxsize)

;printf

("sequential_search:%d \n"

, result)

; result =

sequential_search2

(a, maxsize,1)

;printf

("sequential_search2:%d \n"

, result)

; result =

binary_search

(arr,10,

62);printf

("binary_search:%d \n"

, result)

; result =

interpolation_search

(arr,10,

62);printf

("interpolation_search:%d \n"

, result)

; f[0]

=0; f[1]

=1;for

(i =

2; i <

100; i++

) result =

fibonacci_search

(arr,10,

62);printf

("fibonacci_search:%d \n"

, result)

;return0;

}

大話資料結構 幾種排序演算法

這篇筆記主要是寫寫這些常見的排序演算法。思想 兩兩比較相鄰記錄的關鍵字,反序則交換,直到沒有反序為止。include 交換int型陣列l中下標i和j的值 void swap int l,int i,int j void bubblesort int l 分析 最好的情況比較n 1次,時間複雜度o n...

《大話資料結構》

函式的漸進增長 我們現在來判斷一下,兩個演算法a和b哪個更好。假設兩個演算法的輸入規模都是n,演算法a要做2n 3次操作,你可以理解為先有乙個n次的迴圈,執行完成後,再有乙個n次迴圈,最後有三次賦值或運算,共2n 3次操作。演算法b要做3n 1次操作,你覺得它們誰更快呢 準確來說,答案是不一定的 當...

《大話資料結構》

常見的時間複雜度 常見的時間複雜度如下圖所示 常用的時間複雜度所耗費的時間從小到大依次是 o 1 o logn o n o nlogn o n o n 三次方 o 2 n次方 o n!o n n次方 我們前面已經談到了 o 1 常數階 o logn 對數階 o n 線性階 o n 平方階等,至於o ...