From 9891f38ddcca971fa21ab61e7a70832c8c877b0a Mon Sep 17 00:00:00 2001 From: Michael Hunteman Date: Sat, 23 Sep 2023 12:53:46 -0500 Subject: Initial commit --- sort.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 sort.c (limited to 'sort.c') diff --git a/sort.c b/sort.c new file mode 100644 index 0000000..2044d57 --- /dev/null +++ b/sort.c @@ -0,0 +1,60 @@ +#include + +int +partition(int *nums, int low, int high) +{ + int pivot = nums[high]; + int i = low - 1; + for (int j = low; j < high; ++j) { + if (nums[j] <= pivot) { + int tmp = nums[j]; + nums[j] = nums[++i]; + nums[i] = tmp; + } + } + + nums[high] = nums[++i]; + nums[i] = pivot; + return i; +} + +int +*quick(int *nums, int low, int high) +{ + if (low >= high) { + return nums; + } + + int i = partition(nums, low, high); + nums = quick(nums, low, i - 1); + nums = quick(nums, i + 1, high); + return nums; +} + +int +*bubble(int *nums, int len) +{ + for (int i = 0; i < len; ++i) { + for (int j = i; j < len - 1 - i; ++j) { + if (nums[j] > nums[j + 1]) { + int tmp = nums[j]; + nums[j] = nums[j + 1]; + nums[j + 1] = tmp; + } + } + } + return nums; +} + +int +main() +{ + int nums[5] = {0, 4, 2, 1, 3}; + int len = sizeof(nums) / sizeof(int); + /* int *res = bubble(nums, len); */ + int *res = quick(nums, 0, 4); + for (int i = 0; i < len; ++i) { + printf("%d\n", res[i]); + } + return 0; +} -- cgit v1.2.3