插入排序

虽然它是一个简单的算法,但是发现越是简单的最是容易被忽略的,所以这里写出来,大家可以看看。

    直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好的有序的表中,从而得到一个新的、记录数增一的有序表。当前元素的前面元素均为有序,要插入时,从当前元素的左边开始往前找(从后往前找),比当前元素大的元素均往右移一个位置,最后把当前元素放在它应该呆的位置就行了。

接下来上代码:

import java.util.Scanner;

/**
 * 直接插入排序
 */
public class InsertSort {

	@SuppressWarnings("resource")
	public static void main(String[] args) {
		System.out.print("请随便输入10个整数:");
		Scanner sc = new Scanner(System.in);
		int[] nums = new int[10];
		for (int i = 0; i < nums.length; i++) {
			nums[i] = sc.nextInt();
		}
		insertSort(nums);
		display(nums);
	}

	/**
	 * 直接插入排序算法
	 */
	public static void insertSort(int[] nums) {
		int lengths = nums.length;
		for (int i = 1; i < lengths; i++) {
			int temp = nums[i]; // 从无序序列中取出第一个元素 (注意无序序列是从第二个元素开始的)
			int j;
			for (j = i - 1; j >= 0 && nums[j] > temp; j--) {
				nums[j + 1] = nums[j];
			}
			nums[j + 1] = temp;  // 将临时元素插入到腾出的位置中
		}
	}

	/**
	 * 遍历打印
	 */
	public static void display(int[] nums) {
		if (nums.length > 0 && nums != null) {
			for (int num : nums) {
				System.out.print(num + " ");
			}
			System.out.println("");
		}
	}
}

结果展示:

插入排序