//快速排序算法
1 #include <stdio.h>
2
3 int max(int arr[], int L, int R) { //排序函数 arr排序数组 L数组最左边 R数组最右边
4
int i,j,k,t;
5
k = arr[(L+R) / 2];
6
i = L;
7
j = R;
8
while (i <= j) {
9
while (arr[i] < k) { //i 右移找大于k的值
10
i++;
11
}
12
while (arr[j] > k) { //j 左移找小于k的值
13
j--;
14
}
15
if (i <= j) {
16
//交换 arr[i] 与 arr[j] 的值
17
t
= arr[i];
18
arr[i]
= arr[j];
19
arr[j]
= t;
20
i++; //i 右移一位 下次循环从 arr[i+1] 开始找
21
j--; //j 左移一位 下次循环从 arr[j--] 开始找
22
}
23
}
24
if (L < j) {
25
max(arr, L, j);
26
}
27
if (i < R) {
28
max(arr, i, R);
29
}
30 }
31
32 int main() {
33
int arr[10] = {3, 10, 9, 7, 5, 4, 6, 2, 8, 1}; //初始化乱序1~10数组值
34
int i;
35
max(arr, 0, 9); //调用排序
36
for (i = 0; i < 10; i++) {
37
printf("%d\n", arr[i]); //输出排序后数组
38
}
39
40
return 0;
41 }