查找
直接查找和二分查找
我只用了很短的数据用例,有其他的要求可以自己尝试改哦。
#include<stdio.h>
int search1(int arr[],int length,int key);
int search2(int brr[],int length,int key);
int main(){
int b[10];
int j;
printf("请输入10个数字");
printf("\n");
for(j=0;j<10;j++){
scanf("%d",&b[j]);
}
int abs;
printf("请输入你想查找的数字:");
printf("\n");
scanf("%d",&abs);
int v;
printf("顺序请输入1二分请输入2;");
printf("\n");
scanf("%d",&v);
int funs;
if(v==1){
funs=search1(b,10,abs);
}
else if(v==2){
funs=search2(b,10,abs);
}
if(funs!=0){
printf("%d\n",funs);
printf("查找成功\n");
}
else printf("查找失败\n");
return 0;
}
int search1(int arr[],int length,int key){//顺序查找;
int i;
for(i=0;i<length;i++){
if(arr[i]==key) return i;
}
return 0;
}
int search2(int brr[],int length,int key){//二分查找;
int i,j;
int bur;
//for(i=0;i<length;i++){
//for(j=i;j<length;j++){
//if(brr[i]>brr[j]){
// bur=brr[j];
//brr[j]=brr[i];
//brr[i]=bur;
//}
//}
//}
int low=1;
int high=length-1;
int mid=(low+high)/2;
while(low<=high){
mid=(low+high)/2;
if(key==brr[mid]) return mid;
else if(key<brr[mid]) high=mid-1;
else low=mid+1;
}
return 0;
}