二分法实现一个整形有序数组的二分查找
2017-07-17 21:05
666 查看
二分法实现一个整形有序数组的二分查找
二分法可以提高整个程序的效率,一个有序的数组实现查找,二分法无疑是最好的方法了。
设查找的数为key,若有序数组中间的元素比num大,则在前半部分查找,反之在后半部分查找,据此循环。如果相等,则循环结束,输出下标。
下面简单举例:
如果知道大概的范围,可以改变一下参数,将这个范围的下标传过去,比如:
这样可以减少循环次数。
运行结果如下:
二分法可以提高整个程序的效率,一个有序的数组实现查找,二分法无疑是最好的方法了。
设查找的数为key,若有序数组中间的元素比num大,则在前半部分查找,反之在后半部分查找,据此循环。如果相等,则循环结束,输出下标。
下面简单举例:
#define _CRT_SECUSE_NO_WARNINGS 1 #include<string.h> #include<stdio.h> #include<iostream> int binary_search(int arr[], int key, int sz) { int left = 0; int right = sz - 1; while (left <= right) { int mid = left +((right - left) / 2); if (arr[mid] > key) right = mid - 1; else if (arr[mid] < key) left = mid + 1; else return mid; } return -1; } int main() { int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int key = 6; int sz = sizeof(arr) / sizeof(arr[0]); int ret = binary_search(arr, key, sz); if (ret == -1) printf("没找到\n"); else printf("%d\n", ret); system("pause"); return 0; }
如果知道大概的范围,可以改变一下参数,将这个范围的下标传过去,比如:
#define _CRT_SECUSE_NO_WARNINGS 1 #include<string.h> #include<stdio.h> #include<iostream> int binary_search(int arr[], int key, int left,int right) { //int left = 0; int right = sz - 1; while (left <= right) { int mid = left + ((right - left) / 2); if (arr[mid] > key) right = mid - 1; else if (arr[mid] < key) left = mid + 1; else return mid; } return -1; } int main() { int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int key = 6; int ret = binary_search(arr, key, 2,8); if (ret == -1) printf("没找到\n"); else printf("%d\n", ret); system("pause"); return 0; }
这样可以减少循环次数。
运行结果如下:
相关文章推荐
- 写一个函数,实现一个整形有序数组的二分查找。
- 写一个函数,实现一个整形有序数组的二分查找
- 【二分查找】用C语言实现一个有序数组的二分查找
- 在一个旋转过的有序数组上实现二分查找 收藏
- 在一个旋转过的有序数组上实现二分查找
- 在一个有序数组中查找具体的某个数字——二分法——函数法
- 查找一个有序数组中的一个元素——二分法
- python实现:使用二分查找,查找有序数组中,一个数字最后出现的下标
- 输入一个数组,用二分法查找Java实现
- 有序表查询之一:java实现整型数组二分查找
- 定义数组为有序数组模型,并利用二分法进行查找,删除特定值(缺点:只能删除一个值,若有相同的值,则删除第一个)
- 实现有序列表(基于数组,二分查找)
- 设计一个模板类Sample,用于对一个有序数组采用二分法查找元素下标
- 数组封装应用及有序数组、二分查找源码实现
- 输入连续有序数组,数组中有一个数字丢失,二分查找
- 二分法在有序数组中查找一个数
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
- 写一个函数能够对整型数组进行二分查找。
- 有序数组的二分查找
- 二分法查找有序数组中某元素个数