運用函式的方法實現二分查詢法
阿新 • • 發佈:2021-01-06
技術標籤:c語言
二分查詢
要求:
鍵盤輸入一個有序陣列和你想要尋找的值,建立一個二分查詢函式去找尋你所要尋找的值的所對應的下標
程式碼:
//本質上形參a是一個指標,接收並指向傳過來的陣列的第一個元素的地址
void judgement(int a[],int b,int sz)
{
int left = 0;
int right = sz-1;
while (left <= right)
{
int mid = (left + right) / 2;
if (a[mid] > b)
{
right = mid - 1;
}
else if (a[mid] < b)
{
left = mid + 1;
}
else
{
printf("%d ",mid);
printf("找到了\n");
break;
}
}
if (left > right)
{
printf("沒找到\n");
}
}
int main()
{
int arr[10];
int k = 0;
int i = 0;
int j = 0;
int sz = 0;
//對陣列進行鍵盤輸入值時要一個一個輸入,運用for迴圈
for (i; i < 10; i++)
{
scanf("%d", &arr[i]);
}
printf("陣列為:");
for (j; j < 10; j++)
{
printf("%2d", arr[j]);
}
printf("\n輸入你所要查詢的數字為:");
scanf("%3d", &k);
sz = sizeof(arr) / sizeof(arr[0]);
printf("陣列長度為:%d", sz);
printf ("\n查詢結果為:");
// 此處的傳遞的實參arr是指向陣列的第一個元素的地址
judgement(arr,k,sz);
return 0;
}
總結:
對於自己來講,學習到了以下幾點:
1.如何實現鍵盤輸入一個有序數列;
2.如何將數列作為實參傳遞給函式,函式的形參又是如何接收實參。