排序算法

1. 概述

按是否可一次在内存中排序完成,排序可分为两种:
内部排序:数据记录在内存中进行一次排序。
外部排序:因排序的数据量很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。

排序算法_第1张图片

2.插入排序

2.1直接插入排序(Straight Insertion Sort)
public class StraightInsertionSort {

	public static void insertSort(int[] arr) {
		if (arr == null || arr.length < 2) {
			return;
		}
		for (int i = 1; i < arr.length; i++) {
			int temp = arr[i];
			int indx = 0;
			for (int j = i; j > 0; j--) {
				if (arr[j] < arr[j - 1]) {
					arr[j] = arr[j - 1];
					indx = j - 1;
				} else {
					// 接下来是无用功
					break;
				}
				arr[indx] = temp;
			}
			System.out.println("第"+i+"次排序后:"+Arrays.toString(arr));// 打印每趟排序的结果
		}
		return;
	}

	public static void main(String[] args) {
		int[] arr = new int[] { 3, 1, 5, 7, 2, 4, 9, 6 };
		insertSort(arr);
		System.out.println();
		System.out.println("最后结果:"+Arrays.toString(arr));// 打印每趟排序的结果
	}
}

排序结果:

第1次排序后:[1, 3, 5, 7, 2, 4, 9, 6]
第2次排序后:[1, 3, 5, 7, 2, 4, 9, 6]
第3次排序后:[1, 3, 5, 7, 2, 4, 9, 6]
第4次排序后:[1, 2, 3, 5, 7, 4, 9, 6]
第5次排序后:[1, 2, 3, 4, 5, 7, 9, 6]
第6次排序后:[1, 2, 3, 4, 5, 7, 9, 6]
第7次排序后:[1, 2, 3, 4, 5, 6, 7, 9]

最后结果:[1, 2, 3, 4, 5, 6, 7, 9]
2.1 希尔排序(Shell`s Sort)

未完,待续…

你可能感兴趣的:(数据结构与算法)