#include<stdio.h>
int main(){
int sum,key;//sum为查找数字的下标 key 要查找的数字
int searchItem(int arr[],int len,int key);//声明折半查找
void maopao(int arr[],int len);//声明冒泡排序
void selectSort(int arr[],int len);//声明选择排序
int a[10]={10,20,82,6,4,59,11,96,31,13};//定义并初始化数组
int len= sizeof(a)/sizeof(int);//len 数组的长度
maopao(a,len);//调用冒泡排序
//输出数组
for(int i=0;i<len;i++){
printf("%d\t",a[i]);
}
printf("qingshurushuzi:\n");//输入查询的数字
scanf("%d",&key);
sum=searchItem(a,len,key);//使用折半查询
printf("%d\n",sum);
printf("\n");
selectSort(a,len);//调用选择排序
//输出数组
for(int i=0;i<len;i++){
printf("%d\t",a[i]);
}
}
//折半查找
int searchItem(int arr[],int len,int key){
int low =0,high=len-1,mid;
while(low<=high){
mid=(low+high)/2;
if(key>arr[mid]){
low=mid+1;
}
else if(key<arr[mid]){
high=mid-1;
}else
return mid;
}
return -1;
}
//冒泡排序
void maopao(int arr[],int len){
int temp;
for(int i=0;i<len-1;i++){
for(int j=0;j<len-1-i;j++){
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
//选择排序
void selectSort(int arr[],int len){
int temp;
for(int i=0;i<len-1;i++){
for(int j=i+1;j<len;j++){
if(arr[i]>arr[j]){
temp = arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
} |
|