折半插入排序(java实现)

来源:互联网 发布:淘宝代运营服务商 编辑:程序博客网 时间:2024/06/01 10:18

定义一个数据包装类:

package sorted;public class DataWrap implements Comparable<DataWrap>{int data;String flag;public DataWrap(int data,String flag){this.data=data;this.flag=flag;}public String toString(){return data+"_"+flag;}public int compareTo(DataWrap dw){return this.data>dw.data ? 1:(this.data==dw.data? 0 : -1);}}

折半插入排序算法如下:



package sorted;import java.util.Arrays;public class BinaryInsertSort {public static void binaryInsertSort(DataWrap[] data){System.out.println("开始排序:\n");int arrayLength=data.length;for(int i=1;i<arrayLength;i++){DataWrap tmp = data[i];int low =0;int high=i-1;while(low<=high){int mid=(low+high)/2;if(tmp.compareTo(data[mid])>0){low=mid+1;}else{high=mid-1;}}for(int j=i;j>low;j--){data[j]=data[j-1];}data[low]=tmp;System.out.println(Arrays.toString(data));}}public static void main(String args[]){DataWrap[] data={new DataWrap(9,""),new DataWrap(-16,""),new DataWrap(21,"*"),new DataWrap(23,""),new DataWrap(-30,""),new DataWrap(-49,""),new DataWrap(21,""),new DataWrap(30,"*"),new DataWrap(30,"")};System.out.println("排序之前:\n"+Arrays.toString(data));binaryInsertSort(data);System.out.println("排序之后:\n"+Arrays.toString(data));}}

运行结果:


0 0