每日编程中遇到任何疑问、意见、建议请公众号留言或加入每日编程群聊739635399
二分查找{-36 -25 0 12 14 29 35 47 76 100},对上述十个数进行二分查找。
输入样例:
请输入您要查找的数据:
14
-25
121
输出样例:
14是第5个数,查找次数为1。
-25是第2个数,查找次数为2。
查找失败。
解决方法:
(1)代码实现:
#include <iostream>
using namespace std;
//直接是二分查找的应用
int count_num = 0; //记录查找的次数
int binarySearch(int a[], int n, int key)
{
int low = 0, high = n - 1;
while (low <= high)
{
count_num++;
int mid = (low + high) / 2;
if (a[mid] == key)
return mid;
if (a[mid] > key)
high = mid - 1;
else
low = mid + 1;
}
return -1;
}
int main()
{
int a[10] = {-36, -25, 0, 12, 14, 29, 35, 47, 76, 100};
cout << "请输入需要查找的数:";
int num = 0;
cin >> num;
int n = binarySearch(a, 10, num);
if (n >= 0)
cout << num << "是第" << (n + 1) << "个数,查找的次数为" << count_num << endl;
else
cout << "查找失败" << endl;
system("pause");
return 0;
}
建立一个学生信息系统,输入学生信息,输出有挂科同学的信息,再按照平均成绩从高到低排序输出。
输入样例:
5
zhaoyi 70 80 90 240
qianer 65 32 77 174
sunsan 100 55 68 223
lisi 86 77 90 253
wangwu 100 59 66 225
输出样例:
*[qianer] 65 32 77
*[sunsan] 100 55 68
*[wangwu] 100 59 66
lisi 86 77 90
zhaoyi 70 80 90
wangwu 100 59 66
sunsan 100 55 68
qianer 65 32 77