插入排序是一个很基础的排序方法,基本解法思路为:
将待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
时间复杂度:O(n2)
实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
public class InsertionSortDemo { public static void main(String[] args) { int[] sample = new Random().ints(0, 100).limit(10).toArray(); System.out.println("Origin: " + Arrays.toString(sample));
insertionSort(sample); System.out.println("After: " + Arrays.toString(sample)); }
private static void insertionSort(int[] sample) { for (int i = 1; i < sample.length; i++) { for (int j = i; j > 0; j--) { if (sample[j] < sample[j-1]) { swap(sample, j, j-1); } } } }
private static void swap(int[] sample, int pos1, int pos2) { int tmp = sample[pos1]; sample[pos1] = sample[pos2]; sample[pos2] = tmp; } }
|