使用Java编写直接插入排序,实现从大到小和从小到大两种排序方式

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

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;
		}
	}
}

测试类

package com.hcc.Test;

import com.hcc.util.DirectInsertSort;
import com.hcc.util.HeapSort;
import com.hcc.util.HillSort;
import com.hcc.util.QuickSort;

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);
		DirectInsertSort.sortingMaxToMin(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]+" ");
		}
	}

}

 

你可能感兴趣的:(算法排序)