查找一个有序数组中的一个元素——二分法
2018-03-30 23:57
495 查看
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int binary_search(int arr[], int sz,int key) { int left = 0; int right = sz - 1; while (left <= right) { int mid = left + (right - left) / 2; //求平均数(防止溢出 if (arr[mid] < key) { left = mid + 1; } else if (arr[mid]>key) { right = mid - 1; } else { return mid; } } } int main() { int mid = 0; int key = 14; int arr[] = { 0, 2, 3, 4, 5, 6, 7, 8, 10, 14 }; int sz = sizeof(arr) / sizeof(arr[0]); int ret = binary_search(arr, sz, key); if (arr[ret] == key) { printf("找到了!下标是%d\n", ret); } else { printf("找不到\n"); } system("pause"); return 0; }
相关文章推荐
- 设计一个模板类Sample,用于对一个有序数组采用二分法查找元素下标
- 二分法查找有序数组中的元素
- //二分法查找数组中的某个元素(二分法查找时数组元素必须是有序的)
- 给定一个经过一次旋转的有序数组,从中查找一个值,若存在返回它的索引,不存在返回-1,假定数组存在重复元素
- 在一个有序数组中查找具体的某个数字——二分法——函数法
- 二分法在有序数组中查找一个数
- 用二分法在一个数组中查找你所需元素
- 二分法查找有序数组中某元素个数
- 二分法实现一个整形有序数组的二分查找
- 【小米校招笔试】一个数组是由有序数组经过n次循环移动后所得,请你用最快速度查找某个元素位置
- 定义数组为有序数组模型,并利用二分法进行查找,删除特定值(缺点:只能删除一个值,若有相同的值,则删除第一个)
- C#版本,二分法查找元素是否在一个目标数组中?
- merge两个有序数组 & 查找一个有序数组中指定元素
- 利用二分法查找有序数组中某一元素
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
- 对于一个有序的数组,如果要插入一个元素并保证数组还有序, 问如何获取该元素位置。用二分法
- 两个数字,1000个元素的有序数组和10个元素的无序数组,把他们整合成一个按照有序数组排序方式排序的有序数组
- 迭代用在有序数组二分法查找中,递归的二分法查找更简洁,但速度可能会慢一点
- 折半查找------在一个升序的有序数组中查找某个具体的数字
- 循环有序数组查找一个数