查找算法:采用二分法在有序数组 中查找一数,指出数的位置和查找次数.
来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/08/18 03:16:02
查找算法:采用二分法在有序数组 中查找一数,指出数的位置和查找次数.
查找算法:采用二分法在有序数组 int a[N]={3,9,11,12,21,23,56,61,89,98};中查找一数,指出数的位置和查找次数.
查找算法:采用二分法在有序数组 int a[N]={3,9,11,12,21,23,56,61,89,98};中查找一数,指出数的位置和查找次数.
![查找算法:采用二分法在有序数组 中查找一数,指出数的位置和查找次数.](/uploads/image/z/16812737-17-7.jpg?t=%E6%9F%A5%E6%89%BE%E7%AE%97%E6%B3%95%EF%BC%9A%E9%87%87%E7%94%A8%E4%BA%8C%E5%88%86%E6%B3%95%E5%9C%A8%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84+%E4%B8%AD%E6%9F%A5%E6%89%BE%E4%B8%80%E6%95%B0%2C%E6%8C%87%E5%87%BA%E6%95%B0%E7%9A%84%E4%BD%8D%E7%BD%AE%E5%92%8C%E6%9F%A5%E6%89%BE%E6%AC%A1%E6%95%B0.)
#include <iostream>
using namespace std;
void BinarySearch(int* list, int len, int key, int* index_t) {
\x09//最低边界
\x09int low = 0;
\x09//最高边界
\x09int high = len - 1;
\x09while (low <= high) {
\x09\x09index_t[0]++;
\x09\x09//取中间值
\x09\x09int middle = (low + high) / 2;
\x09\x09if (list[middle] == key) {
\x09\x09\x09index_t[1] = middle;
\x09\x09\x09return;
\x09\x09}
\x09\x09else if (list[middle] > key) {
\x09\x09\x09//下降一半
\x09\x09\x09high = middle - 1;
\x09\x09}
\x09\x09else {
\x09\x09\x09//上升一半
\x09\x09\x09low = middle + 1;
\x09\x09}
\x09}
\x09//没找到
\x09index_t[1] = -1;
}
int main() {
\x09const int N = 10;
\x09int list[N]= {3, 9, 11, 12, 21, 23, 56, 61, 89, 98};
\x09int index_t[2] = {0};
\x09BinarySearch(list, N, 12, index_t);
\x09
\x09cout << "查找次数为:" << index_t[0] << endl;
\x09if (index_t[1] != -1)
\x09\x09cout << "已经找到12,索引位置为:" << index_t[1] << endl;
\x09else
\x09\x09cout << "没找到!" << endl;
}
using namespace std;
void BinarySearch(int* list, int len, int key, int* index_t) {
\x09//最低边界
\x09int low = 0;
\x09//最高边界
\x09int high = len - 1;
\x09while (low <= high) {
\x09\x09index_t[0]++;
\x09\x09//取中间值
\x09\x09int middle = (low + high) / 2;
\x09\x09if (list[middle] == key) {
\x09\x09\x09index_t[1] = middle;
\x09\x09\x09return;
\x09\x09}
\x09\x09else if (list[middle] > key) {
\x09\x09\x09//下降一半
\x09\x09\x09high = middle - 1;
\x09\x09}
\x09\x09else {
\x09\x09\x09//上升一半
\x09\x09\x09low = middle + 1;
\x09\x09}
\x09}
\x09//没找到
\x09index_t[1] = -1;
}
int main() {
\x09const int N = 10;
\x09int list[N]= {3, 9, 11, 12, 21, 23, 56, 61, 89, 98};
\x09int index_t[2] = {0};
\x09BinarySearch(list, N, 12, index_t);
\x09
\x09cout << "查找次数为:" << index_t[0] << endl;
\x09if (index_t[1] != -1)
\x09\x09cout << "已经找到12,索引位置为:" << index_t[1] << endl;
\x09else
\x09\x09cout << "没找到!" << endl;
}
在一个有序数列中某些数可能不只出现一次,查找时要将所有位置都查到并统计出现的次数,用顺序查找法完成
二分法查找它是怎么计算查找次数的?比如 2 7 9 11 13 14 17 19 31 41 中查找 19这个数 具体是
算平均查找长度长度为12的按关键字有序的查找表采用顺序组织方式,若用二分法查找,则在等概率情况下,查找不成功的平均查找长
数据结构题目:才用折半查找算法在长度为12的有序表中查找一个元素时,查找成功的平均查找长度为多少?...
C++ 二分法查找算法
二分法查找 C++假设一维数组a[10]中的10个元素是按从小到大的顺序有序排列的,编写程序从a中二分查找出其值等于给定
关于数据结构二分法查找成功的平均查找长度和失败的查找长度
二分法查找的问题1、在有序列表(3、6、8、10、12、15、16、18、21、25、30)中用二分法查找12所需的比较
二分法查找问题在有序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值12,所需的
二分法查找算法的精确度怎么找?谢谢
查找一个数字在固定数列中出现的次数
有15个数按小到大的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数组中第几个元素的值.