插入排序的具体步骤如下:
- 从第一个元素开始,该元素可以认为已经被排序
- 取出下一个元素,在已经排序的元素中从后向前扫描
- 如果该元素(已排序)大于新元素,则将该元素移到下一位置
- 重复步骤3,知道找到已排序的元素小于或者等于新元素的位置
- 将新元素放到该位置中
- 重复步骤2
public class InserttionSort{
pulic static <T extends Comparable<? super T>> void insertionSort(T[] a){
int j;
for (int p = 1; p < a.length; p++) {
T tmp = a[p];
for (int j = p; j > 0 && tmp.compareTo(a[j-1])<0 ; j--) {
a[j] = a[j-1];
}
a[j]=tmp;
}
}
}
package SortAlgorithm;
/**
* Created by Promacanthus on 2017/6/12.
*/
public class InsertSort {
int[] ints;
InsertSort(int[] ints) {
this.ints = ints;
}
public void insertsort(int[] ints) {
for (int i = 0; i < ints.length; i++) {
for (int j = i; (j > 0) && (ints[j] < ints[j - 1]); j--) {
swap(ints, j, j - 1);
}
}
}
private void swap(int[] ints, int j, int i) {
int temp = ints[j];
ints[j] = ints[i];
ints[i] = temp;
}
public static void main(String[] args){
int[] a = {4, 2, 1, 6, 3, 6, 0, -5, 1, 1};
InsertSort insertSort = new InsertSort(a);
insertSort.insertsort(a);
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}