在有序陣列中查詢時
從陣列的中間元素開始查詢,如果中間元素正好是要查詢的元素,則搜尋過程結束,
如果所找元素大於(小於)中間元素,則在陣列大於(小於)中間元素的那一半中查詢,
每一次跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。
這種搜尋演算法每一次比較都使搜尋範圍縮小一半,相對於遍歷整個陣列查詢節省了很多時間
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...