Javaソートアルゴリズム[ソートの挿入]

1581 ワード

package cn.com.dom4j.sort;

import java.util.Arrays;

public class Test2 {

    /*
         

                    
           N - 1     ,    p = 1  N - 1 ,         0    p - 1          

         :    p ,       p        ,       p + 1               
     */
    public static > void insertionSort_1(AnyType[] arr) {

        for (int i = 1; i < arr.length; i++) {
            for (int j = i; j > 0 && arr[j].compareTo(arr[j - 1]) < 0; j--) {
                swap(arr, j, j - 1);
            }
        }
    }

    /*
               :
             p         ,                  ,            

         :
            p     ,          ,   p    ,        (a[j] = a[j-1]),       p    .
            p        (        p      )  
     */

    /**
     *          
     */
    public static > void insertionSort_2(AnyType[] a) {

        int j;
        for (int p = 1; p < a.length; p++) {
            AnyType tmp = a[p];
            for (j = p; j > 0 && tmp.compareTo(a[j - 1]) < 0; j--)
                a[j] = a[j - 1];
            a[j] = tmp;
        }
    }


    /**
     *             
     */
    public static > void swap(AnyType[] arr, int i, int j) {
        if (arr == null || arr.length <= 1 || i == j) {
            return;
        }

        AnyType tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }
}