zoukankan      html  css  js  c++  java
  • 二分查找

    通过展示STL中已存在的lowerbound和uppebound函数来展示二分查找。

     1 #include <cstdio>
     2 // A是一个递增数列,v存在时返回它出现的第一个位置,否则返回下标i:在此处插入v不破环数列的升序
     3 // 返回值是x,x+1,x+2,...,y-1,y。返回y表示v > A[y - 1]
     4 int My_lower_bound(int* A,int x,int y,int v){
     5     int m;
     6     while(x < y){
     7         m = x + (y - x) / 2;
     8         if(A[m] >= v) y = m;
     9         else x = m + 1;
    10     }
    11     return x;
    12 }
    13 // A是一个递增数列,v存在时返回它出现的最后一个位置的后面一个位置,否则返回下标i:此处插入v后数列仍然有序
    14 int My_upper_bound(int* A,int x,int y,int v){
    15     int m;
    16     while(x < y){
    17         m = x + (y - x) / 2;
    18         if(A[m] <= v) x = m + 1;
    19         else y = m;
    20     }
    21     return x;
    22 }
    23 int main(){
    24     int A[] = {1,2,3,3,4,4,5,5,5,6,6,6,6,7,8,9,10,11,12}; // 19个元素
    25     printf("%d
    ",My_lower_bound(A,0,19,4));
    26     printf("%d
    ",My_upper_bound(A,0,19,4));
    27     printf("%d
    ",My_lower_bound(A,0,19,5));
    28     printf("%d
    ",My_upper_bound(A,0,19,5));
    29     printf("%d
    ",My_lower_bound(A,0,19,6));
    30     printf("%d
    ",My_upper_bound(A,0,19,6));
    31     printf("%d
    ",My_lower_bound(A,0,19,12));
    32     printf("%d
    ",My_upper_bound(A,0,19,12));
    33     printf("%d
    ",My_lower_bound(A,0,19,15));
    34     return 0;
    35 }
  • 相关阅读:
    oracle omf管理 and asm omf
    oracle 9i下载地址
    rac部署过程的任务列表
    oracle connect实例
    cpio.gz文件解压缩方式
    函数remove_constants
    oracle优化日记脚本
    查看oracle隐含参数
    rac笔记
    MotionEvent的getX(),getY()与getRawX(),getRawY()区别
  • 原文地址:https://www.cnblogs.com/cyb123456/p/5835496.html
Copyright © 2011-2022 走看看