折半查詢法(有序陣列)

2021-09-25 15:58:45 字數 696 閱讀 1116

在有序陣列中查詢時

從陣列的中間元素開始查詢,如果中間元素正好是要查詢的元素,則搜尋過程結束,

如果所找元素大於(小於)中間元素,則在陣列大於(小於)中間元素的那一半中查詢,

每一次跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。

這種搜尋演算法每一次比較都使搜尋範圍縮小一半,相對於遍歷整個陣列查詢節省了很多時間

1、找到最左邊的下標left和最右邊的下標right,中間下標mid = left + right/2,

2、使用while迴圈判斷,a[mid]是否等於所查數number,不相等則進行下面操作

3、將所查數字與中間數a[mid]比較,如果a[mid] < number時 left=mid+1,如果a[mid] > number時 right=mid-1;

4、若a[mid]不等於所查數number,返回到while繼續操作

#include

int main()

while(a[left+(right-left)/2] != number)   //使用折半查詢法,從陣列中間查起,下標的平均值即中間值的下標。當mid不等於number迴圈進行以下內容

else

}printf("這個數是%d\n",a[left+(right-left)/2]);

printf("一共用了%d次\n",k);

return 0;

二分法查詢有序陣列

package array public class testbinarysearch 指定查詢的元素 int num 12 用二分法查詢,返回索引 int start 0 int end arr.length 1 end的設定應該為陣列最後一位 int index 1 用於標誌是否查詢到指定元素 ...

迴圈有序陣列查詢值

迴圈陣列,即有序的陣列進行移位後的陣列。如 4,5,6,7,8,0,1,2,3 查詢值是否存在時,利用二分的思想。步驟 while lmid key,return mid。如果a mid l 說明l mid是有序的,mid 1 r是迴圈的 如果key mid key a l 則key在l mid 1...

有序陣列增刪改查詢

public class myorderarray public myorderarray int maxsize 新增資料 比如在2,4,5,6中插入3 public void insert long value for int j elements j i j arr i value eleme...