二分法排序

由于上篇---八大排序法,进而联系起二分法排序,所以在这里补充一个比较经典的排序法---二分法排序;

逻辑相对简单,所以直接上代码

package com.sinolife.mtrs.apply.controller;

import java.util.Arrays;

/** 
 * @author  delin Li 
 * @version createTime:2017-12-7下午04:10:37 
 * @Description  
 */
public class TestSort {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int[] ins = {1,3,53,5,7,81,2,5,71,9};
        binarySort(ins);//二分法排序
        print(ins);
    }

    public static void print(int[] data) {  
        for (int i = 0; i < data.length; i++) {  
            System.out.print(data[i] + "  ");  
        }   
    }  
    public static  void binarySort(int[] arr){// 定位
        for(int i = 1;i<arr.length;i++){
            int temp = arr[i];
            int low = 0;
            int top = i-1;
            int mid;
            while(low<=top){
                mid = (top+low)/2;
                if(arr[mid]>temp){
                    top = mid-1;
                }else{
                    low = mid+1;
                }
            }
            for(int j=i;j>low;j--){// 移动数组
                arr[j]= arr[j-1];
            }
            arr[low] = temp;// 在找到的位置插入
        } 
    }
}

如有错误,希望朋友们能指出来。

原文地址:https://www.cnblogs.com/lidelin/p/8034302.html