要理解插入排序,首先得理解實現一個算法-->對于一個已經從大到小排好序的數組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; } }}
新聞熱點
疑難解答