查詢演算法筆記(C 版)

2021-09-20 18:41:15 字數 1753 閱讀 9579

記錄最近學習的一些查詢演算法

時間複雜度:o(n)

**:

//順序查詢

intsequentialsearch

(int

* list,

int n,

int x)

return-1

;}

測試**:

int

main

(void);

//可以是無序陣列

cout <<

"list:"

;for

(int i =

0; i <

10; i++

) cout << list[i]

<<

" ";

cout << endl;

int x =8;

int i =

sequentialsearch

(list,

10, x);if

(i <

0) cout <<

"未找到"

<< endl;

else cout <<

"list["

<< i <<

"]中找到"

<< x << endl;

return0;

}

執行結果:

list:1 3 5 7 9 2 4 6 8 0

list[8]中找到8

請按任意鍵繼續. . .

時間複雜度:o(logn)

**:

//二分查詢

intbinsearch

(int

* list,

int n,

int x)

return-1

;}

遞迴形式:

//二分查詢(遞迴方式)

intbinsearch_r

(int

* list,

int lo,

int hi,

int x)

return-1

;}

測試**:

int

main

(void);

//前提:有序陣列!

cout <<

"list:"

;for

(int i =

0; i <

10;i++

) cout << list[i]

<<

" ";

cout << endl;

int x =15;

//int i = binsearch(list, 10, x);

int i =

binsearch_r

(list,0,

10, x);if

(i <

0) cout <<

"未找到"

<< endl;

else cout <<

"list["

<< i <<

"]中找到"

<< x << endl;

return0;

}

執行結果:

list:1 3 5 7 9 11 13 15 17 19

list[7]中找到15

請按任意鍵繼續. . .

排序演算法筆記(C 版)

記錄最近學習的一些排序演算法 注 第乙個演算法給出了完整的測試程式,其餘的為避免重複及節省空間,只顯示排序演算法部分 執行結果的程式耗時每次執行略有不同,僅供大致對比參考 時間複雜度 o n 最好 o n2 平均 o n2 最差 空間複雜度 o 1 include include 計時用 using...

演算法筆記 問題 C 查詢

題目描述 輸入陣列長度 n 輸入陣列 a 1.n 輸入查詢個數m 輸入查詢數字b 1.m 輸出 yes or no 查詢有則yes 否則no 輸入輸入有多組資料。每組輸入n,然後輸入n個整數,再輸入m,然後再輸入m個整數 1 m n 100 輸出如果在n個陣列中輸出yes否則輸出no。樣例輸入 co...

查詢演算法Java版

順序查詢演算法 1.演算法描述 順序比較即可。2.平均查詢長度 n 1 2,其中n為表長。3.演算法實現 省略4.優化思想 根據經驗,目前被查到越多的元素,將來可能被查到的可能性也越大。所以可以考慮,每次查詢到乙個元素後,將它和直接前驅交換位置。如果上述的經驗從概率上來講是成立的,則可以加快順序查詢...