【上机笔试之八】二分法查找

    xiaoxiao2021-03-25  127

    对于查找类题目,二分法查找是最高效的方法,有时题目也规定必须使用二分法。二分法查找的前提是,数据先按一个顺序排好序。代码如下:

    #include <iostream> using namespace std; //二分法查找/折半查找 int binarySearch(int array[], int len, int key){ int low = 0, high = len - 1, middle; while (low <= high){ middle = (low + high) / 2; if (array[middle] == key){ //找到,返回下标索引值 return middle; } else if (array[middle] > key){ //查找值在低半区 high = middle - 1; } else{ //查找值在高半区 low = middle + 1; } } return -1; //找不到 } void main() { int n, look_num, output; int arr[100]; while (scanf("%d", &n) != EOF) { for (int i = 0; i < n; i++){ scanf("%d", &arr[i]); } scanf("%d", &look_num); output = binarySearch(arr, n, look_num); printf("%d", output); } }

    上机笔试系类教程: 【上级笔试之一】数据输入 【上机笔试之二】冒泡排序 【上机笔试之三】快速排序 【上机笔试之四】快速排序(2) 【上机笔试之五】计算两个日期的差值 【上机笔试之六】Hash应用 【上机笔试之七】Hash应用(2)-从大到小顺序输出其中前m大的数 【上机笔试之八】二分法查找 【上机笔试之九】贪心算法-换零钱 【上机笔试之十】栈应用-扣号匹配

    转载请注明原文地址: https://ju.6miu.com/read-13604.html

    最新回复(0)