两种方法都编译运行通过,可以当做排序类直接使用。
折半插入排序:
public class Sort1 { public static void main(String[] args) { InsertSort sort = new InsertSort(); sort.InsertSort(); int[] arr = sort.getarr(); System.out.println(); System.out.println("排序之后:"); for (int ar : arr) { System.out.print(ar + " "); } } } class InsertSort { int[] a = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 1 }; int i,high,low,mid; int temp; public int[] getarr() { return a; } public void InsertSort() { System.out.println("排序之前:"); for (int m : a) { System.out.print(m + " "); } for(int i=1;i<a.length;i++) { temp=a[i]; low = 0; high = i-1; while(low<=high) { mid = (low + high)/2; if (temp<a[mid]) { high = mid -1; } else { low = mid +1; } } for(int j=i-1;j>=high+1;j--) { a[j+1] = a[j]; } a[high+1] = temp; } } }
直接插入排序:
public class Sort1 { public static void main(String[] args) { InsertSort sort = new InsertSort(); sort.InsertSort(); int[] arr = sort.getarr(); System.out.println(); System.out.println("排序之后:"); for (int ar : arr) { System.out.print(ar + " "); } } } class InsertSort { int[] a = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 1 }; public int[] getarr() { return a; } public void InsertSort() { System.out.println("排序之前:"); for (int m : a) { System.out.print(m + " "); } for (int i = 1; i < a.length; i++) { int temp = a[i]; int j; for (j = i - 1; j >= 0 && a[j] > temp; j--) { a[j + 1] = a[j]; } a[j + 1] = temp; } } }
原文:http://www.cnblogs.com/2206411193qzb/p/7455652.html