順序查詢與二分查詢演算法

2022-05-07 14:15:11 字數 1454 閱讀 7740

順序查詢演算法

順序查詢是非常簡單常用的查詢演算法,基本思路:從第乙個元素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 查詢失...