本章写的有点仓促,过一段时间会再次修改。
五、查找
(一)顺序查找发
/*
method:
顺序查找法
param:
data 待查找的序列
num 待查找的序列的长度
k 待查找的值
return:
返回查找到的下标,没有则返回-1
*/
int Order_Select(int data[], int num, int k)
{
for (int i = 0; i < num; ++i)
{
if (data[i] == k) //依次查找每一个元素
return i;
}
}
(二)折半查找发
/*
method:
折半查找法
param:
order_data 有序序列
low,high 查找low - high 范围内的值,low,high 有值
k 待查找的值
return:
返回查找到的下标,没有则返回-1
*/
int Bsearch(int order_data[], int low, int high, int k)
{
int mid = 0;
while (low <= high) //判断low<high
{
mid = (low + high) / 2; //mid为折半的中间下标
if (order_data[mid] == k) //将中间值与待查找值比较
return mid; //如果等于,则返回下标
else if (order_data[mid] < k) //如果待查找值大于中间值,缩小查找范围为右边一半
low = mid + 1;
else
high