From f4c63ff909739fa11a435bcea2fa9a68e9e6c2c2 Mon Sep 17 00:00:00 2001 From: hairrrrr <781728963@qq.com> Date: Sat, 7 Mar 2020 22:13:34 +0800 Subject: [PATCH] 3-7 --- .../advanced C/test/01/05 qsort实现/test1.c | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 code/answear/advanced C/test/01/05 qsort实现/test1.c diff --git a/code/answear/advanced C/test/01/05 qsort实现/test1.c b/code/answear/advanced C/test/01/05 qsort实现/test1.c new file mode 100644 index 0000000..7f6372f --- /dev/null +++ b/code/answear/advanced C/test/01/05 qsort实现/test1.c @@ -0,0 +1,52 @@ +#include + +//¶¨ÒåÒ»¸ö Cmp ÀàÐ͵ĺ¯ÊýÖ¸Õ룬º¯ÊýÖ¸Õë·µ»ØÖµÊÇ int,²ÎÊýÊÇ(int, int) +typedef int(*Cmp)(int, int); + +void bubbleSort(int arr[], int size, Cmp cmp); +int Asc(int x, int y); +int Desc(int x, int y); + +int main(void) { + + int arr[] = { 9, 5, 2, 7 }; + int size = sizeof(arr) / sizeof(arr[0]); + int i = 0; + + bubbleSort(arr, size, Desc); + + for (i = 0; i < size; i++) { + printf("%d ", arr[i]); + } + + return 0; +} + +void bubbleSort(int arr[], int size, Cmp cmp) { + + int i, j; + int tmp; + + for (i = 0; i < size - 1; i++) { + for (j = 0; j < size - 1 - i; j++) { + //¸ù¾Ý cmp º¯ÊýµÄ¹æÔò£¬Èç¹û·µ»Ø 1£¬½øÐÐ if Óï¾äÖеÄλÖû¥»» + if (cmp(arr[j], arr[j + 1]) == 1) { + tmp = arr[j]; + arr[j] = arr[j + 1]; + arr[j + 1] = tmp; + } + + } + } + +} +//ÉýÐò +int Asc(int x, int y) { + //Èç¹ûµÚÒ»¸ö²ÎÊý±ÈµÚ¶þ¸ö²ÎÊý´ó·µ»Ø 1 + return (x > y ? 1 : 0); +} + +//½µÐò +int Desc(int x, int y) { + return (x < y ? 1 : 0); +}