From 5c067d9d7cb1daaccee7b678e288ddcb7f783017 Mon Sep 17 00:00:00 2001 From: 6415c0ea9035885f18fdfa78 <6415c0ea9035885f18fdfa78@devide> Date: Fri, 28 Apr 2023 16:46:00 +0000 Subject: [PATCH] Fri Apr 28 16:46:00 UTC 2023 inscode --- .inscode | 2 +- Main.java | 9 ++++++--- algo/Bubble.java | 23 +++++++++++++++++++++++ algo/Heap.java | 36 ++++++++++++++++++++++++++++++++++++ algo/Quick.java | 37 +++++++++++++++++++++++++++++++++++++ algo/Select.java | 2 +- 6 files changed, 104 insertions(+), 5 deletions(-) create mode 100644 algo/Bubble.java create mode 100644 algo/Heap.java create mode 100644 algo/Quick.java diff --git a/.inscode b/.inscode index 013a2ba..557edd8 100644 --- a/.inscode +++ b/.inscode @@ -1 +1 @@ -run = "java algo/Select.java" +run = "java Main.java" diff --git a/Main.java b/Main.java index 1a68b2d..20bf696 100644 --- a/Main.java +++ b/Main.java @@ -1,5 +1,8 @@ -class Main { +public class Main { public static void main(String[] args) { - System.out.println("Hello world!"); + algo.Bubble.sort(new int[] { 2, 4, 3, 5, 1, 6 }); + algo.Select.sort(new int[] { 2, 4, 3, 5, 1, 6 }); + algo.Heap.sort(new int[] { 2, 4, 3, 5, 1, 6 }); + algo.Quick.sort(new int[] { 2, 4, 3, 5, 1, 6 }); } -} \ No newline at end of file +} diff --git a/algo/Bubble.java b/algo/Bubble.java new file mode 100644 index 0000000..7d0d275 --- /dev/null +++ b/algo/Bubble.java @@ -0,0 +1,23 @@ +package algo; + +import java.util.Arrays; + +public class Bubble { + public static void main(String[] args) { + Select.sort(new int[] { 2, 4, 3, 5, 1, 6 }); + } + + public static void sort(int[] nums) { + + for (var i = 0; i < nums.length; i++) { + for (var j = 0; j < nums.length - i - 1; j++) { + if (nums[j] > nums[j + 1]) { + var t = nums[j]; + nums[j] = nums[j + 1]; + nums[j + 1] = t; + } + } + } + System.out.println(Arrays.toString(nums)); + } +} \ No newline at end of file diff --git a/algo/Heap.java b/algo/Heap.java new file mode 100644 index 0000000..89cc06f --- /dev/null +++ b/algo/Heap.java @@ -0,0 +1,36 @@ +package algo; + +import java.util.Arrays; + +public class Heap { + public static void main(String[] args) { + Heap.sort(new int[] { 2, 4, 3, 5, 1, 6 }); + } + + public static void sort(int[] nums) { + for (var i = nums.length / 2 - 1; i >= 0; i--) { + heapify(nums, i, nums.length); + } + for (var i = nums.length - 1; i >= 0; i--) { + var t = nums[i]; + nums[i] = nums[0]; + nums[0] = t; + heapify(nums, 0, i); + } + System.out.println(Arrays.toString(nums)); + } + + public static void heapify(int[] nums, int root, int len) { + var child = root * 2 + 1; + if (root < len && child < len) { + if (child + 1 < len && nums[child] < nums[child + 1]) + child++; + if (nums[root] < nums[child]) { + var t = nums[root]; + nums[root] = nums[child]; + nums[child] = t; + heapify(nums, child, len); + } + } + } +} \ No newline at end of file diff --git a/algo/Quick.java b/algo/Quick.java new file mode 100644 index 0000000..2d633df --- /dev/null +++ b/algo/Quick.java @@ -0,0 +1,37 @@ +package algo; + +import java.util.Arrays; + +public class Quick { + public static void main(String[] args) { + Quick.sort(new int[] { 2, 4, 3, 5, 1, 6 }); + } + + public static void sort(int[] nums) { + partition(nums, 0, nums.length - 1); + System.out.println(Arrays.toString(nums)); + } + + public static void partition(int[] nums, int left, int right) { + if (left < right) { + int base = nums[left], i = left, j = right; + while (i < j) { + while (i < j && nums[j] >= base) { + j--; + } + if (i < j) { + nums[i] = nums[j]; + } + while (i < j && nums[i] <= base) { + i++; + } + if (i < j) { + nums[j] = nums[i]; + } + } + nums[i] = base; + partition(nums, left, i); + partition(nums, i + 1, right); + } + } +} \ No newline at end of file diff --git a/algo/Select.java b/algo/Select.java index 65de550..5f24dcb 100644 --- a/algo/Select.java +++ b/algo/Select.java @@ -23,4 +23,4 @@ public class Select { } System.out.println(Arrays.toString(nums)); } -} +} \ No newline at end of file -- GitLab