顺序表的排序,二分法查找的c语言程序

如题所述

#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);
}追问

可以实现么?

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-28
用c语言写的,其实和C++差不多,主要是算法,总共有四个文件Bin_Search.c是二分查找的算法,里面有进行测试。Sort.c和sort.h是关于排序的算法,包括多个排序算法,SortTest.c是对这些排序算法的一些测试,使用不同的算法对同一组数据进行排序,同时计算每种排序的所需要的时间已发送到楼主邮箱,希望楼主采纳
相似回答