二分查找法和插入排序

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;
}

 

 

 

posted @   神也没办法  阅读(192)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
阅读排行:
· 几个技巧,教你去除文章的 AI 味!
· 系统高可用的 10 条军规
· 对象命名为何需要避免'-er'和'-or'后缀
· 关于普通程序员该如何参与AI学习的三个建议以及自己的实践
· AI与.NET技术实操系列(八):使用Catalyst进行自然语言处理
点击右上角即可分享
微信分享提示