zoukankan      html  css  js  c++  java
  • 二分查找(折半查找)

    数据元素采用数组方式存储, 并且按照从小到大的顺序存储.
    下标0不存放元素, 从下标1开始存放元素, 元素值的范围在[1, 150].

    #include <stdio.h>
    
    void print (int arr[], int length);
    int binarySearch (int arr[], int val, int max);
    
    int main () {
        int max = 11;
        int arr[11] = {0, 1, 16, 24, 35, 47, 59, 62, 73, 88, 99};
        int pos;
    
        print(arr, max);
    
        pos = binarySearch(arr, 88, max); // 查找88, 在数组中的位置
        if (pos) {
            printf("查找成功
    ");
            printf("%d %d
    ", pos, arr[pos]);
        } else {
            printf("查找失败
    ");
        }
    
    	return 0;
    }
    
    void print (int arr[], int length) {
        printf("
    ");
        printf("数组内的全部元素如下: 
    ");
        int i;
        for (i=0; i<length; i++) {
            printf("%d %d
    ", i, arr[i]);
        }
        printf("
    ");
    }
    
    // 参数: arr查找数组 val查找值 max数组容量
    // 返回值: 找到返回元素在数组中的下标, 找不到返回0
    int binarySearch (int arr[], int val, int max) {
        int left = 1; // 存放第一个元素的下标
        int right = max - 1; // 数组最后一个元素的下标
        int pos = 0;
        int mid;
    
        while (left <= right) {
            mid = (int)((left + right) / 2);
            printf("mid: %d
    ", mid);
            if (arr[mid] > val) {
                right = mid - 1;
            } else if (arr[mid] < val) {
                left = mid + 1;
            } else {
                pos = mid;
                break;
            }
        }
    
        return pos;
    }
    
    
  • 相关阅读:
    013.ES6 -对象字面量增强型写法
    012. ES6
    011. ES6 语法
    10. 9. Vue 计算属性的setter和getter 以及 计算属性的缓存讲解
    4. Spring MVC 数据响应方式
    3. SpringMVC 组件解析
    9. Vue 计算属性
    【洛谷 2984】给巧克力
    【洛谷 1821】捉迷藏 Hide and Seek
    【洛谷 1821】银牛派对Silver Cow Party
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7622449.html
Copyright © 2011-2022 走看看