转载请注明出处:http://blog.csdn.net/droyon/article/details/8780598
/**
* 插入排序利用到了这样的事实:0到p-1上的元素,全部处于已排序状态。
* 插入排序没有数据替换,而是用到了数据移动。
* 位置p上的元素,储存于temp上,p之前所有更大的元素向右移动一个位置,然后temp被置于正确的位置上。
* 由于嵌套循环,因此插入排序的时间复杂度为O(N的平方 )
* @author
*
*/
public class SimpleInsertMethodSort {
private static int[] array = new int[]{1,8,2,9,3,7,11,23,90,4,5};
public static void main(String args[]){
System.out.println("排序前");
printArray();
simpleInsertSort();
System.out.println("\n排序后");
printArray();
}
public static void simpleInsertSort(){
for(int p=1;p<array.length;p++){
int temp;
temp = array[p];
int j;
for(j=p;j>0&&temp<array[j-1];j--){//找到合适的位置,插入元素,并将位置之后的元素后移
array[j]=array[j-1];
}
array[j] = temp;
}
}
public static void printArray(){
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
}
}
运行结果:
排序前
1 8 2 9 3 7 11 23 90 4 5
排序后
1 2 3 4 5 7 8 9 11 23 90