zoukankan      html  css  js  c++  java
  • 二分查找数组中与目标数字(可以是浮点型)最近的数的位置

     0 ///欢迎批评指正
    1
    #include <stdio.h> 2 3 int a[100]; 4 5 int search(int start,int end,double distinction){ 6 int mid; 7 if(distinction > a[end - 1]) 8 return end - 1; 9 if(distinction < a[start]) 10 return start; 11 while(1){ 12 mid = (start + end) / 2; 13 if(a[mid - 1] < distinction && a[mid] > distinction) 14 return ((a[mid] - distinction) >= (distinction - a[mid - 1])) ? mid - 1 : mid; 15 if(distinction > a[mid]){///(a[start] + a[end]) / 2.0 > 16 start = mid; 17 }else if(distinction < a[mid]){ 18 end = mid; 19 }else{ 20 return mid; 21 } 22 } 23 } 24 int main(void){ 25 int n; 26 double m; 27 printf("输入数组元素个数: "); 28 scanf("%d",&n); 29 for(int i = 0; i < n; i++) 30 scanf("%d",&a[i]); 31 while(scanf("%lf",&m)!=0){ 32 printf("%d ",search(0,n,m)); 33 } 34 35 return 0; 36 }
  • 相关阅读:
    Fire
    Apple Tree
    访问艺术馆
    三角关系
    字母表
    折纸
    旅行
    单词分类

    圆桌游戏
  • 原文地址:https://www.cnblogs.com/yfs123456/p/5426332.html
Copyright © 2011-2022 走看看