要理解插入排序,首先得理解实现一个算法-->对于一个已经从大到小排好序的数组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; } }}
新闻热点
疑难解答