#include <stdio.h>
#include <stdlib.h>
//快速排序
void quickSort();
int main(int argc, const char * argv[])
{
int num_really[11];
for (int i = 0; i < 11; i++) {
num_really[i] = arc4random() % (90 - 10 + 1) + 10;
}
for (int i = 0; i < 11; i++) {
printf("%d ", num_really[i]);
}
printf("\n");
quickSort(num_really, 0, 10);
for (int i = 0; i < 11; i++) {
printf("%d ", num_really[i]);
}
printf("\n");
return 0;
}
//快速排序
void quickSort(int num[], int start, int end) {
int i = start;
int j = end;
//记录比较值
int k = num[start];
//记录上一步是什么
int past_step = 0;
while (i != j) {
//找比比较值大的数
if (past_step == 0) {
while (num[j] > k) {
j--;
if (j == i)
break;
}
num[i] = num[j];
past_step = 1;
} else {
while (num[i] < k) {
i++;
if (i == j)
break;
}
num[j] = num[i];
past_step = 0;
}
}
num[i] = k;
if (i > start)
quickSort(num, start, i);
if (i+1 < end)
quickSort(num, i+1, end);
}
网友评论