1.线性排序算法
//线性排序算法:前提数据是无序的
//函数参数:要查找的数组,查找的数字,数组长度
int LineSearch(long num[],long x,int n)
{
int i;
//循环遍历数组
for(i=0; i<n; i++)
{
//若在查找时找到
if(num[i] == x)
{
//返回下标
return i;
}
}
//若找不到,则返回-1
return -1;
}
2.二分排序算法
//二分排序算法:前提数据是按照顺序排好的
//函数参数:要查找的数组,查找的数字,数组长度
int BinarySearch(long num[],long x,int n){
int low = 0,high = n-1,mid;
while(low <= hign)
{
mid = (high + low) / 2;
if(x > num[mid])
{
low = mid + 1;
}
else if(x < num[mid])
{
high = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
【注意】但此代码有一个缺陷,若high + low的和溢出,使mid成为一个负数;那么则利用减法替代加法——mid = low + (high - low)/2