二分排序和二分查找

二分法排序以及二分法查找

二分法原理:
在插入第i个元素时,对前面的0-i-1个元素进行折半,先跟他们中间的元素进行比较
如果比中间元素大则对前面在进行折半,大则对后半部分进行折半。直到左边大于右边
然后把第i个元素前一位与目标位置之间的所有元素后移,再把第i个元素放在目标位置。
下面将二分法用代码实现一下

public  void barnarySort(int arr[]){
    for(int i=0;i<arr.length;i++){
         int min=0;
         int end=i-1;
         int start=0;
         int tmp=arr[i];
         while(start<=end){
             min=(start+end)/2;
             if(arr[min]>tmp){
                 end=min-1;
             }else{
                 start=min+1;
             }            
         }
     for(int j=i-1;j>end;j--){
        data[j+1]=data[j];
     }
        data[end+1]=tmp;
    }
}

二分法查找原理:
使用二分法查找的方法是数组必须是排好序的,查找数x时先从中间查找,如果x小于中间数则在对前前半部分折半查找负责对后半部分进行折半查找,如此直到找到x元素,或者查找不到返回-1;
请看实现的代码

  public int getIndex(int arr[],int x){
    
         int start=0;
         int end=arr.length-1;
         int min=0;
         while(start<=end){
              min=(strat+end)/2;
              if(x==arr[min]){
                return min;
              } esle if(x<arr[min]){
                end=min-1;
              }else if(x>arr[min){
                 start=min+1;
              }
         }
       return -1;
      
}

具体的实现方法就是上面;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容