直接插入排序(实现从小到大和从大到下的排序)

实现直接插入排序的方法类

package com.hcc.util;

/**
 * 直接插入排序
 * @author hcc
 *
 */
public class DirectInsertSort {
    
    /**
     * 从小到大排序
     * @param arr
     * @param length
     */
    public static void sortingMinToMax(int[] arr,int length) {
        for(int i = 1;i < length;i++){
            int j;
            int temp = arr[i];
            for(j=i-1;j >=0 && arr[j] > temp;j--) {
                arr[j+1] = arr[j];
            }
            //因为上面循环中是j--  所以现在的j为-1  所以要加1
            arr[j+1] = temp;
        }
    }
        
        /**
     * 从大到小排序
     * @param arr
     * @param length
     */
    public static void sortingMaxToMin(int[] arr,int length) {
        for(int i=1;i < length;i++) {
            int temp = arr[i];
            int j;
            for(j = i-1;j >= 0 && arr[j] < temp;j--) {
                arr[j+1] = arr[j];
            }
            arr[j+1] = temp;
        }
    }
}

测试类

public class Test {
    public static void main(String[] args) {

        int[] arr = {69,65,70,90,37,92,6,28,54,20};
        System.out.println("原始数据:");
        printSortData(arr);
        System.out.println();
        System.out.println("直接插入排序:");
        directInsertSortTest(arr);      
    }
    
    /**
     * 直接插入排序测试方法
     * @param arr
     */
    public static void directInsertSortTest(int[] arr) {
        DirectInsertSort.sortingMinToMax(arr, arr.length);
        printSortData(arr);
    }
    
    /**
     * 打印输出方法
     * @param arr
     */
    public static void printSortData(int [] arr) {
        int arrLength = arr.length;
        for(int i = 0;i < arrLength;i++) {
            System.out.print(arr[i]+" ");
        }
    }

}

你可能感兴趣的:(直接插入排序(实现从小到大和从大到下的排序))