顺序表的排序,二分法查找的c语言程序
发布网友
发布时间:2022-04-26 19:38
我来回答
共2个回答
热心网友
时间:2022-05-01 17:40
#include<stdio.h>
int fun(int a[],int n,int key)
{i
nt low,mid,high;//low、mid、high是三个索引分别指向数组的下标low=0;//low指向数组a[]的第一个元素,即下表为0的元素
high=n-1;//lhigh指向数组a[]的最一个元素,即下表为n-1的元素,n为数组的长度
while(low<=high)//循环终止条件是low>high的时候
{
mid=(low+high)/2;//所谓二分查找就在这里,每次都让mid指向数组下标等于low和high之和的一半的元素i
f(key<a[mid])//如果a【mid】大于要查找的元素,说明要查找的元素在low和mid之间,这是需要把high重新置为mid-1
(high=mid-1);//这里应该是{},不能使()吧
else if(key>a[mid])//这里同理,如果a【mid】小于要查找的元素,说明要查找的元素在mid和high之间,这是需要把low重新置为mid+1
(low=mid+1);
else
return mid;//剩下的就是相等的情况,直接返回mid就是查找到的结果
}
return -1;//执行到这一步就说明,low>high,没有找到要查找的元素,返回-1表示没有结果
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int a,b,c;
b=4;
c=fun(a,10,b);
if(c==1)
printf("not found");
else
printf("psition %d\n",c);
}追问可以实现么?
热心网友
时间:2022-05-01 18:58
用c语言写的,其实和C++差不多,主要是算法,总共有四个文件Bin_Search.c是二分查找的算法,里面有进行测试。Sort.c和sort.h是关于排序的算法,包括多个排序算法,SortTest.c是对这些排序算法的一些测试,使用不同的算法对同一组数据进行排序,同时计算每种排序的所需要的时间已发送到楼主邮箱,希望楼主采纳