From 3a3240d4e502fcfc1024f7d98aa7bf9bc62e27e7 Mon Sep 17 00:00:00 2001 From: ehlxr Date: Mon, 28 Sep 2020 23:46:19 +0800 Subject: [PATCH] add insert sort --- .../java/me/ehlxr/leetcode/InsertSort.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main/java/me/ehlxr/leetcode/InsertSort.java b/src/main/java/me/ehlxr/leetcode/InsertSort.java index 6fccff2..2e865b0 100644 --- a/src/main/java/me/ehlxr/leetcode/InsertSort.java +++ b/src/main/java/me/ehlxr/leetcode/InsertSort.java @@ -12,13 +12,19 @@ import java.util.Arrays; */ public class InsertSort { + /** + * ①. 从第一个元素开始,该元素可以认为已经被排序 + * ②. 取出下一个元素,在已经排序的元素序列中从后向前扫描 + * ③. 如果该元素(已排序)大于新元素,将该元素移到下一位置 + * ④. 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置 + * ⑤. 将新元素插入到该位置后 + * ⑥. 重复步骤②~⑤ + */ public static void sort(int[] arr) { for (int i = 1; i < arr.length; i++) { for (int j = i - 1; j >= 0; j--) { - int tmp = arr[j]; if (arr[j + 1] < arr[j]) { - arr[j] = arr[j + 1]; - arr[j + 1] = tmp; + swap(arr, j, j + 1); } else { break; } @@ -28,6 +34,16 @@ public class InsertSort { System.out.println(Arrays.toString(arr)); } + public static void swap(int[] arr, int i, int j) { + // arr[i] = arr[i] + arr[j]; + // arr[j] = arr[i] - arr[j]; + // arr[i] = arr[i] - arr[j]; + + int tmp = arr[i]; + arr[i] = arr[j]; + arr[j] = tmp; + } + public static void main(String[] args) { sort(new int[]{4, 9, 1, 6, 8, 2}); }