1.插入排序的时间复杂度是O(n*n),当需要排序的数组的顺序是有序的时候,其时间复杂度为O(n)。
非降序:
代码:
package com.cn.insertion;
/**
* 插入排序
* @author Administrator
*
*/
public class Insertion_Sort {
public static void main(String[] args) {
int[] a = new int[]{10,9,8,7,6,5,4,3,2,1,0};
insertionSort(a);
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
/**
* 一个一个的取出,然后将其插入到它前面的数组序列的合适位置,
* 依次与前一个比较,如果小于该值,说明要放到该值的前面,所
* 以把该较大的值向后移动一位,然后再比较,知道找到或是的位
* 置。
* @param a
*/
private static void insertionSort(int[] a) {
int key = 0, j = 0;
//依次取出key值
for (int i = 1; i < a.length; i ++) {
key = a[i];
j = i - 1;
//比较,移位
while (j >= 0 && key < a[j]) {
a[j + 1] = a[j];
j--;
}
a[j + 1] =key;
}
}
}