标签:
要理解插入排序,首先得理解实现一个算法-->对于一个已经从大到小排好序的数组a[],插入一个value使得整个数组的顺序依然是从大到小的;
这个算法的实现非常简单,不做探讨。
对于乱序数组a[];在外层i循环中,第一次循环,我假定数组只有一个元素a[0],以a[1]作为value来插入,第一次循环结束可以得到一个有序数组,
第二次循环以数组有两个元素a[0],a[1],再以a[2]作为value去插入,以此类推实现整个数组排序。
import java.lang.reflect.Array;
import java.util.Arrays;
public class TestArray {
public static void main(String[] args) {
int a[] = {1,5,7,4,2,9,8,3,0};
testArray(a);
System.out.println(Arrays.toString(a));
}
static void testArray(int[] a){
for(int i = 1; i < a.length; i++){
int value = a[i], j;
for(j = i-1; j >= 0 && value <a[j]; j--){
//将a[j]位置空出来等待value插入
a[j+1] = a[j];
}
// 未优化的j循环
// for(j = i-1; j >= 0; j--){
// if(value < a[j]){
// a[j+1] = a[j];
// }else{
// break;
// }
// 在j循环后执行了j--
// 所以a[j+1] = value;
a[j+1] = value;
}
}
}
标签:
原文地址:http://www.cnblogs.com/superkrissV/p/4442861.html