- 记于:2026-04-01 上午
- 地点:浙江省·温州市·家里
- 天气:多云
简介
插入排序是一种简单的排序算法,它的工作原理是通过将一个元素插入到已排序的子序列中,来实现排序。
将其想象成手中扑克牌的排序过程,这样就比较直观了。
实现
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
public class InsertionSort {
public static void main(String[] args) { int[] arr = randomArray(100);
System.out.println("before sort: "); print(arr);
long t1 = System.currentTimeMillis(); int[] arr2 = insertionSort(arr); long t2 = System.currentTimeMillis(); System.out.println("\ntime: " + (t2 - t1) + "ms");
System.out.println("after sort: "); print(arr2); System.out.println(); }
public static int[] insertionSort(int[] arr) { for (int i = 1; i < arr.length; i++) { for (int j = i; j > 0; j--) { if (arr[j] < arr[j - 1]) { int temp = arr[j - 1]; arr[j - 1] = arr[j]; arr[j] = temp; } else { break; } } } return arr; }
public static void print(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } }
public static int[] randomArray(int n) { if (n <= 0) { return new int[0]; }
int[] arr = new int[n];
for (int i = 0; i < n; i++) { arr[i] = i + 1; }
java.util.Random random = new java.util.Random(); for (int i = n - 1; i > 0; i--) { int j = random.nextInt(i + 1); int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; }
return arr; } }
|
主要见 insertionSort 方法。
思路:
- 从第2个元素遍历,与左边的元素对比。
- 如果当前元素小于左边的元素,交换它们的位置。
- 继续对比左边的元素,直到找到比它大的或者到头。
参考