插入排序
package practice1;
public class InserSort {
/**
* Insertion Sort: 每次把一个项按照关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部插入完成
* 时间复杂度:T(n) = O(n^2)
* 在输入规模较小的情况下,使用插入排序
* @param array
*/
public static int[] insertSort(int[] array){
int j, current;
for(int i=1; i<array.length; i++){
current = array[i];
j = i-1;
while (j >= 0 && current < array[j]) {
array[j+1] = array[j];
j--;
}
array[j+1] = current;
}
return array;
}
/**
* print the array
* @param arr
*/
public static void printArray(int[] arr){
for(int i = 0;i<arr.length;i++){
System.out.println(i+"---"+arr[i]);
}
}
/**
* produce random array
* @param num
* @return
*/
private static int[] produceIntList(int num) {
int list[] = new int[num];
for(int i=0; i<num; i++){
int temp = (int) (Math.random() * 10000);
list[i] = temp;
}
return list;
}
public static void main(String[] args) {
int[] list = produceIntList(100000);
long time1 = System.currentTimeMillis();
list = insertSort(list);
long time2 = System.currentTimeMillis();
System.out.println("the time used is : "+(time2 - time1));
}
}