c语言,求排序和二分查找的代码!
发布网友
发布时间:2022-05-04 21:24
我来回答
共1个回答
热心网友
时间:2022-06-26 00:32
建议用顺序表,不要用结构体数组。
typedef char ElemType;
typedef struct {
ElemType name[10];
ElemType number[15];
}Person;
typedef struct{
Person r[500];
int length;
}SqList;
int Search_Seq(SSTable ST,int key)//顺序查找
{
for (i=ST.length;i>=1;i++)
{
if(ST.R[i].key==key)
return i;
}
return 0;
}
int Search_Seq2(SSTable ST,int key)//设置哨兵顺序查找
{
ST.R[0].key=key;//哨兵
for (i=ST.length;ST.R[i].key!=key;--i)
return i;
return 0;
}
int Search_Bin(SSTable ST,int key)//折半查找
{
int low=1;
int high=ST.length;
while (low<=high)
{
int mid=(low+high)/2;
if(key==ST.R[mid].key)
return mid;
else if(key<ST.R[mid].key)
high=mid-1;
else
low=mid+1;
}
return 0;
}
自己总结了两种方法,顺序查找和折半查找,希望对你有所帮助。