順序查詢演算法
順序查詢是非常簡單常用的查詢演算法,基本思路:從第乙個元素m開始逐個與需要查詢的元素x進行比較,當比較到元素值相同(即m=x)時返回元素m的下標,如果比較到最後都沒有找到,則返回-1。該演算法的時間複雜度為o(n),如果資料量很大時查詢效率會很低。
1 #include23/*順序查詢演算法
4a為資料陣列,len為陣列a的長度,x為查詢的元素
5如果查詢成功返回元素x在陣列a中的下標,找不到則返回-1 6*/
7int search(int a,int len, intx)8
15return -1; //
沒有找到 16}
1718
intmain()19;
21int x=2; //
需要查詢的元素
22int i = search(a, 10
, x);
23if(i!=-1
)24 printf("
元素%d在第%d個位置\n
",x,i+1
);25
else
26 printf("
沒有找到元素:%d\n
",x);
27return0;
28 }
二分查詢演算法
二分查詢(又稱為折半查詢)是在有序序列中查詢比較多的查詢演算法,基本思路:設有乙個從小到大的序列,取中間的元素m進行比較,如果等於需要查詢的元素x則返回元素m的下標,若x大於m則再從右邊的區間查詢,若x小於m則再從左邊的區間查詢,這樣每次減少一半的查詢範圍。時間複雜度為o(lgn),查詢速度相對順序查詢要快很多,但是查詢的資料序列必須是有序序列(即資料是從小到大或從大到小排序的)。
1 #include23/*二分查詢演算法
4a為資料陣列,len為陣列a的長度,x為查詢的元素
5如果查詢成功返回元素x在陣列a中的下標,找不到則返回-1 6*/
7int binarysearch(int a,int len, intx)8
23return -1; //
沒有找到 24}
2526
intmain()
27; //
必須是有序序列
29int x=7; //
需要查詢的元素
30int i = binarysearch(a, 10
, x);
31if(i!=-1
)32 printf("
元素%d在第%d個位置\n
",x,i+1
);33
else
34 printf("
沒有找到元素:%d\n
",x);
35return0;
36 }
順序查詢與二分查詢
先上 include void printarr int a,int n void bublesort int a,int n void swap int a,int b int binarysearch int a,int n,int k int normalsearch int a,int n,...
查詢演算法 順序查詢 二分查詢 分塊查詢
近期總結了各大排序演算法的原理 並對其進行了實現,想著一併把查詢演算法總結了,今天就著手開始總結查詢演算法。關鍵字與陣列中的數順序比較,時間複雜度o n void cgradationdlg onbutfind else if n 10 updatedata false 二分查詢又稱折半查詢,優點是...
php二分查詢 順序查詢演算法
二分查詢的陣列必須是排好序的,順序查詢沒要求,php查詢陣列元素有內建的函式array search和in array 二分查詢法 function binsearch arr,search elseif arr mid search elseif arr mid search return 查詢失...