記錄最近學習的一些查詢演算法
時間複雜度: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.優化思想 根據經驗,目前被查到越多的元素,將來可能被查到的可能性也越大。所以可以考慮,每次查詢到乙個元素後,將它和直接前驅交換位置。如果上述的經驗從概率上來講是成立的,則可以加快順序查詢...