• 二分查找(折半查找)


    数据元素采用数组方式存储, 并且按照从小到大的顺序存储.
    下标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;
    }
    
    
  • 相关阅读:
    1.28
    1.27
    1.26
    如果给你以下功能怎么测试
    测试面试题
    对h5页面的测试方式
    完美解决linux下Django报错Error: That port is already in use.
    KeyError:使用Python的Appium中的“ touchAction” 错误码
    Appium自动化测试
    selenium IDE使用
  • 原文地址:https://www.cnblogs.com/asheng2016/p/7622449.html
Copyright © 2020-2023  润新知