算法:二分查找算法(c++)
来源:互联网 发布:矩阵可逆的条件 编辑:程序博客网 时间:2024/05/17 03:08
算法原理:
(1)首先确定该区间的中点位置:
mid = (low + high) / 2;
(2)然后将待查的K值与Array[mid].key比较:若相等,则查找成功并返回此位置,否则须确定新的查找区间,继续二分查找,具体方法如下:
①若array[mid].key>K,则由表的有序性可知array[mid..n]均大于K,因此若表中存在关键字等于K的结点,则该结点必定是在位置mid左边的子表ARRAY[1..mid-1]中,故新的查找区间是左子表ARRAY[1..mid-1]。
②类似地,若Aarrayarrayay[mid].key
#include<iostream>using namespace std;#define MaxSize 1000void InsertSort(int array[], int m); int BianrySearch(int array[], int n, int m);int main(){ int number; int m=0; int array[MaxSize];// // cout << "请输入需要查找的数据数:"; cin >> number; cout << "请输入需要查找的数据:"; for (int i = 0; i < number; i++) { cin >> array[i]; } //对array数组通过插入算法实现升序排序 InsertSort(array, number); cout << "请输入需要查找的数据:"; cin >> m; cout << "需要查找的数据的下标为:"; cout << BianrySearch(array, number, m) << endl;}void InsertSort(int array[], int m){ for (int i = 1; i < m; i++) { int j = i - 1; int temp = array[i]; while (temp<array[j] && j >= 0) { array[j + 1] = array[j]; j--; } array[j + 1] = temp; }}int BianrySearch(int array[],int n, int search){ int high = n; int low = 0; while (low <= high) { int mid = (low + high) / 2; if (array[mid] < search) low = mid - 1; else if (array[mid] > search) high = mid + 1; else return mid; } return -1;}
0 0
- C 二分查找算法
- c 二分查找算法
- [C]算法 - 二分查找
- C 二分查找算法
- C 二分查找算法
- 算法:二分查找算法(c++)
- C语言版二分查找算法
- c语言二分查找算法
- C查找算法——二分查找
- [算法]二分查找算法
- 算法----二分查找算法
- 查找算法 二分查找
- 查找算法:二分查找
- 算法--查找--二分查找
- 查找算法---二分查找
- 查找算法:二分查找算法
- 二分查找算法的C/C++实现
- C语言实现二分查找算法
- 简单描述XML和JSON
- 自定义相机截取矩形框中的内容
- 个人面试提问企业必问的问题
- Bonfire: Seek and Destroy
- Ubuntu下git的安装和配置
- 算法:二分查找算法(c++)
- Altium Designer元器件生成3D封装图
- JSON继承JsonConverter序列化与反序列化重写类属性
- 单选按钮 默认选中
- 加载网页
- 如果查看应用性能图表是一种信仰
- C++内存管理详解
- UIButton
- SAX解析XML 详解