Java实现折半插入排序

来源:互联网 发布:win7照相机软件 编辑:程序博客网 时间:2024/06/05 03:29

折半插入排序

import java.util.*;public class BInsertSort{    private static void sort(int[] dataArr){        for(int i = 1; i < dataArr.length; i++){            int temp = dataArr[i];            int low = 0, high = i - 1;            while(low <= high){                int mid = (low + high) / 2;                if(temp < dataArr[mid]){                    high = mid - 1;                }else{                    low = mid + 1;                }            }            int j = i - 1;            for(; j >= high + 1; j--){                dataArr[j + 1] = dataArr[j];            }            dataArr[j + 1] = temp;        }    }    public static void main(String[] args){        int[] dataArr = new int[args.length];        for(int i = 0; i < args.length; i++){            try{                dataArr[i] = Integer.valueOf(args[i]);            }catch(NumberFormatException e){                System.out.println("input invalid decimal integer:" + e.getMessage());                return;            }        }        System.out.println("befort sort:" + Arrays.toString(dataArr));        sort(dataArr);        System.out.println("after sort:" + Arrays.toString(dataArr));    }}

运行:
javac BInsertSort.java
java BInsertSort 49 38 65 97 76 13 27
输出:
befort sort:[49, 38, 65, 97, 76, 13, 27]
after   sort:[13, 27, 38, 49, 65, 76, 97]