以前写的一些老代码
留着没事可以看看
1 //
2 // main.c
3 // cTest
4 //
5 // Created by on 13-10-8.
6 // Copyright (c) 2013年. All rights reserved.
7 //
8
9 #include <stdio.h>
10
11 #define N (10)
12
13 void quickSor(int *nums, int indexStart, int indexEnd);
14 int partition(int *nums, int indexStart, int indexEnd);
15 void exchange(int *nums, int p1, int p2);
16 void printNums(int *nums, int count);
17
18 int main()
19 {
20 printf(">>>strat\n");
21 int nums[N] = {0, 4, 2, 5, 1, 3, -1, 19, 99, -100};
22 printNums(nums, N);
23 int mid = partition(nums, 0, N-1);
24 printNums(nums, N);
25 printf("mid = %d\n", mid);
26 quickSor(nums, 0, N-1);
27 printNums(nums, N);
28 return 0;
29 }
30
31 void quickSor(int *nums, int indexStart, int indexEnd)
32 {
33 if (indexEnd > indexStart)
34 {
35 int indexMid = partition(nums, indexStart, indexEnd);
36 quickSor(nums, indexStart, indexMid-1);
37 quickSor(nums, indexMid+1, indexEnd);
38 }
39
40 }
41
42 int partition(int *nums, int indexStart, int indexEnd)
43 {
44
45 int p2 = indexStart-1;
46 int p1;
47
48 int target = nums[indexEnd];
49
50 for (p1 = indexStart; p1 < indexEnd; p1++)
51 {
52 if (nums[p1] <= target)
53 {
54 p2++;
55 exchange(nums, p1, p2);
56
57 }
58 }
59 exchange(nums, p2+1, indexEnd);
60 return p2+1;
61 }
62
63 void exchange(int *nums, int p1, int p2)
64 {
65 int tmp = nums[p1];
66 nums[p1] = nums[p2];
67 nums[p2] = tmp;
68 }
69
70 void printNums(int *nums, int count)
71 {
72 printf("numbers : ");
73 int i;
74 for (i = 0; i < count; ++i)
75 {
76 printf("%4d\t", nums[i]);
77 }
78 printf("\n");
79 }
时间: 2024-12-20 04:31:05