1、順序查找算法
順序查找比較簡單,這裏就不用代碼實現了,其原理就是按順序比較每一個元素,直到找到關鍵字。數組
其時間複雜度爲O(n).spa
2、二分查找(折半查找)code
原理是:查找過程從數組的中間元素開始,若是中間元素正好是要查找的元素,則查找過程結束;blog
若是要查找的元素大於中間元素,則從數組大於中間元素的那一半查找;若是小於中間元素,則從小於中間元素的那一半查找;不然就是沒有找到。排序
時間複雜度爲O(logn).博客
代碼以下:class
1 int binary_search(int *a,int len,int key) 2 { 3 int low=0; 4 int high=len-1; 5 while(low<=high) 6 { 7 int mid=(low+high)/2; 8 if(a[mid]==key) 9 { 10 return mid; 11 } 12 //在左邊找 13 else if(a[mid]>key) 14 { 15 high=mid-1; 16 } 17 //在右邊找 18 else if(a[mid]<key) 19 { 20 low=mid+1; 21 } 22 //沒找到該值 23 else 24 return -1; 25 } 26 }
3、二叉排序樹查找原理
使用條件:先建立二叉排序樹:搜索
1.若它的左子樹不爲空,則左子樹上全部結點的值均小於它的根結點的值。
2.若它的右子樹不空,則右子樹上全部結點的值均大於它的根結點的值。
3.它的左、右子樹也分別爲二叉排序樹。
算法原理:
在二叉排序樹b中查找key的過程以下:
1.若b是空樹,則搜索失敗,不然:
2.若key等於b的根節點的數據域的值,則查找成功;不然
3.若key小於b的根節點的數據域的值,則查找左子樹;不然
4.查找右子樹。
時間複雜度爲:O(log2(n)).
代碼將在下篇博客中實現。