c語言的search函數
① 求c語言大神 題目:編寫查找函數search(),實現如下功能。
C代碼和運行結果如下:
輸入5,成功輸出了其在給定數組中的下標為4,結果正確,望採納~
附源碼:
#include <stdio.h>
int search(int a[], int n, int x) { // 返回數組a[]中x的下標
int i;
for (i = 0; i < n; i++) {
if (a[i] == x)
return i;
}
return -1; // 數組中沒有x則返回-1
}
int main() {
int x, a[10] = {7,9,3,4,5,2,1,6,10,8};
scanf("%d", &x); // 用戶輸入數x
printf("%d ", search(a, 10, x)); // 輸出x在數組中的下標
return 0;
}
② 用c語言實現折半查找
#include<stdio.h>
int find(int a[],int x,int n,int m)
{int i;
if(n>m)return -1;
i=(n+m)/2;
if(a[i]==x)return i;
if(a[i]>x)return find(a,x,n,i-1);
return find(a,x,i+1,m);
}
int main()
{
int a[20]={2,3,6,7,12,18,19,21,25,28,30,33,37,39,42,45,47,49,50,51};
int x,i;
printf("已有的數是: ");
for(i=0;i<20;i++)
printf("%d ",a[i]);
printf(" 請輸入要查找的數:");
scanf("%d",&x);
if((i=find(a,x,0,19))>=0)
printf("%d是第%d個數 ",x,i+1);
else printf("未找到%d ",x);
return 0;
}