zoukankan      html  css  js  c++  java
  • 二分查找法和插入排序

    day6

    二分查找法

     

    原理:在一个是顺序的序列,每次查找都找中间位置的值与之比较,如果中间位置的值比待查数值大,在序列左边继续执行查找过程;如果中间位置的值比待查的值小,在序列右边继续执行查找过程

    public static int binarySearch(int[] arrray,int a){
       int low = 0;
       int high = array.length -1;//数组下标从0计数,下标比真实数量少1
       int mid;
       while(low <= high){
           mid = (low + high) / 2;
           if(a == array[mid]){
              return mid;
          }
          else if(a > array[mid]){//向右查找
              low = mid + 1; //+1是排除了array[mid]
          }
       else{    //向左查找
           high = mid - 1;
      }
       return -1; //说明数组中没有查找的数
       
    }

     

    插入排序

    将一个数据插入一个已经拍好序的序列中。

    数组从下标为0的元素开始排序。

    public static int[] insertionSort(int[] array){
       for(int i =1;i<array.length;i++){//从下标为1开始比较,首元素相当于在一个新的数组中,一个元素是有序的
           int index = i-1;
           int inserVal = array[i];
           while(index>=0 && inserVal <array[index] ){//待插入的数据比被插入的数小(我也不知道为什么要判断index是否大于0)
               arrary[index+1] = array[index];//将array[index]向后移一位
               index--
            }
           array[index+1] = inserVal;//待插入的数据大于被插入的数,array[index]位置不变,inserVal就需要向后移动;
      }
       return array;
    }

     

     

     

  • 相关阅读:
    【HDOJ6701】Make Rounddog Happy(启发式合并)
    【HDOJ6731】Angle Beats(极角排序)
    【BZOJ1132】Tro(叉积)
    【CF1236D】Alice and the Doll(set)
    Storm
    Spark
    Python基础(2)
    数据库漫谈
    Python基础(1)
    C/C++链接过程相关
  • 原文地址:https://www.cnblogs.com/stydejava/p/13375325.html
Copyright © 2011-2022 走看看