diff --git a/.inscode b/.inscode index 013a2ba36c6eb0e38b35a6c8db98cdb8dfe02a39..557edd83095590e4b0fa3a215a23bfa2809727aa 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 1a68b2dd0a36d3447eed91dc217b0ec3bb12c172..20bf6961dc5b6dcb180c4f5645ffe4759e6ebf4b 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 0000000000000000000000000000000000000000..7d0d275f4fcc10a4323bdcbdbe21983cfa8dbb86 --- /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 0000000000000000000000000000000000000000..89cc06fe2392869aac614781fe2995e49e4ce781 --- /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 0000000000000000000000000000000000000000..2d633df9c89fcc28de3a09d166a752dc6c85759d --- /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 65de55030d44e495354d4b2d91234e600e484d86..5f24dcb76d5b4b334e09b0add9d5432caccf2950 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