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

     

     

     

  • 相关阅读:
    layui表格数据统计
    浅谈权限控制
    搜索栏实时更新查找内容
    虚拟域名
    关于阿里云服务器安装了Apache开放80端口访问不了网页
    验证码思路
    计算标准差 Exercise07_11
    倒置数组 Exercise07_12
    找出最小元素的下标 Exercise07_10
    找出最小元素 Exercise07_09
  • 原文地址:https://www.cnblogs.com/stydejava/p/13375325.html
Copyright © 2011-2022 走看看