美文网首页
二分排序和二分查找

二分排序和二分查找

作者: 飞天胖 | 来源:发表于2018-06-14 21:02 被阅读0次

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

二分法原理:
在插入第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;
      
}

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

相关文章

  • 剑指Offer.C++.code6-10

    (1)排序和查找是面试考察算法的重点,如二分查找、归并排序、快速排序等;(2)查找:顺序查找、二分查找、哈希表查找...

  • Swift语言实现几个简单算法

    栈队列二分查找插入排序归并排序快速排序 栈 队列 二分查找 二分查找是用于快速查找到目标数据(已排序)的一种查找方...

  • Java实现常见的算法

    主要罗列了常见的选择排序,冒泡排序和快速排序,还有二分查找的算法。 选择排序 冒泡排序 快速排序 二分查找 注意二...

  • 冒泡,选择,插入排序以及二分查找

    冒泡排序 选择排序 优化选择排序 插入排序 排序案例 二分法查找 二分法查找的前提是数组必须是有序的; 二分查找案...

  • 简单算法

    冒泡排序: while 实现的二分查找: 递归实现二分查找:

  • 排序查找c++

    排序算法 选择排序 顺序查找 二分查找

  • 二分法查找

    二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法...

  • 排序算法

    准备工作 一、快速排序 二、归并排序 三、堆排序 四、 二分查找 /*二分查找*/ 五、 冒泡排序 /*OC 冒...

  • javascript 算法

    快速排序 冒泡排序 二分查找

  • php算法

    冒泡排序 快速排序 二分查找

网友评论

      本文标题:二分排序和二分查找

      本文链接:https://www.haomeiwen.com/subject/nsjueftx.html