快速排序
对一个元素个数为20个的随机数组进行快速排序
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
void Display(int *a, int n){
for (register int i = 0; i < n; i++){
printf("%d ", a[i]);
}
printf("\n");
}
void quicksort(int *a, int left, int right){
if (left >= right){
return;
}
int pivot;
pivot = a[left];
int i = left;
int j = right;
while (i < j){
while (i < j && a[j] >= pivot){
j--;
}
a[i] = a[j];
while (i < j && a[i] <= pivot){
i++;
}
a[j] = a[i];
}
printf("快速排序中:");
Display(a, 20);
a[i] = pivot;
quicksort(a, left, i - 1);
quicksort(a, i + 1, right);
}
int main(){
int a[20];
//生成一个有20个元素的随机数组
srand((unsigned int)time(0));//修改种子
for (register int i = 0; i < 20; i++){
a[i] = rand();
}
printf("原数组为:\n");
Display(a, 20);
printf("\n");
quicksort(a, 0, 19);
printf("\n快速排序后:\n");
Display(a, 20);
printf("\n");
return 0;
}
如有不足,欢迎各位大佬指正