在整型有序的陣列中查詢一個數字的下標
阿新 • • 發佈:2018-12-09
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char a[] = { 1,2,3,4,5,6,7,8,9,10 }; int to_find = 6; //to_find是需要尋找的數字 int n = sizeof(a)/sizeof a[0]; //n代表總個數 int left = 0; int right = n-1; //left和right代表的都是陣列的下標 while (1) { if (to_find > a[(left+right)/2]) //如果尋找的值比中間的值大,就把中間值的下標賦給左邊 { left = (left + right) / 2 +1; } else if (to_find < a[(left + right) / 2]) ////如果尋找的值比中間的值大,就把中間值的下標賦給右邊 { right = (left + right) / 2 - 1; } else break; } printf("%d\n", (left + right) / 2); system("pause"); return 0; }