你的位置:首页 > Java教程

[Java教程]java入门排列算法

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