1、(折半查找):用顺序映像实现折半查找算法(即二分查找算法),可自选递归或非递归方式;具体要求如下:在主函数中用rand()函数(需包含“stdlib.h”头文件)产生10000个递增的随机数(相邻位置间的递增值为[0~10]之间的随机值),并输出这10000个数。然后从键盘上输入待查找的数,并调用查找函数fun()进行查找
2.在fun( )函数中,按折半查找法查找指定的数,如果找到则返回它的位置序号,如果没找到则返回一个特定代码(比如 -1)
3. 若查找成功,则将查找成功的提示和位置序号在主函数中输出;若查找失败,则将查找失败的提示在主函数中输出;
4.无论查找成功还是失败,都要在主函数中输出查找次数;
#include <iostream>
using namespace std;
//数组以升序排列时,二分法查找x
int fun(int x, int a[], int n)
{
int low, high, mid;
low = 0;
high = n-1;
while(low <= high)
{
mid = (low + high) / 2;
if(x < a[mid])
high = mid - 1;
else if(x > a[mid])
low = mid + 1;
else
return mid;
}
return -1;
}
int main()
{
int i,k,pos;
int a[10];
cout << "请输入要查找的数:";
cin >> k;
cout << "请输入10个整数(升序):";
for(i=0;i<10;i++)
cin >> a[i];
pos = fun(k,a,10);
if(pos < 0)
cout << "未找到此数";
else
cout << pos;
return 0;
}