在一个有序数组中查找具体数字。

要求:查找数组中某一具体数字,并且输出打印其下标。

算法:折算查找算法(二分查找算法)

左下标:int left=0;

右下标:int right=sz-1;

数组中数字个数sz=sizeof(arr)/sizeof(arr[0]);

数组:char arr[]={1,2,3,4,5,6,7,8,9,10};

int med=(right+left)/2;

代码图:

在一个有序数组中查找具体数字。

在一个有序数组中查找具体数字。

在一个有序数组中查找具体数字。

在一个有序数组中查找具体数字。

代码:

#include<stdio.h>

int main()

{

char arr[]={1,2,3,4,5,6,7,8,9,10};

int b=0;

int sz=sizeof(arr)/sizeof(arr[0]);

int left=0;

int right=sz;

printf("请输入要找的数字(1-10以内):");

scanf("%d",&b);

while(left<=right)//保证右大于等于左

{

int med=(left+right)/2;

if(arr[med]<b)

{

 left=med+1;

}

else if(arr[med]>b)//arr[med]代表下标对应的具体数字

{

 right=med-1;

}

else

{

 printf("已找到,其对应的下标为:%dn",med);

 break;

}

}

if(left>right)

{

 printf("找不到n");

}

return 0;

}

发表评论

相关文章