#include <stdlib.h>
#include <stdio.h>
typedef int Item;
#define key(A) (A)
#define less(A, B) (key(A) < key(B))
#define exch(A, B) {Item t = A; A = B; B = t;}
#define compexch(A, B) if(less(B,A)) exch(A,B)
// 注意在宏函数这里实际是不做任何执行的,只是替换而已
int partition(int a[], int l, int r){
int i = l - 1;
int j = r;
Item v = a[r];
for(;;){
while(less(a[++i], v));
while(less(v, a[--j])){
if(j == 1){
break;
}
}
if(i >= j){
break;
}
exch(a[i], a[j]);
}
exch(a[i], a[r]);
return i;
}
void quickSort(int a[], int l, int r){
int i;
if(r <= l){
return;
}
i = partition(a, l, r);
quickSort(a, l, i-1);
quickSort(a, i+1, r);
}
void main(int argc, char* argv[]){
int i;
int N = atoi(argv[1]);
int* a = malloc(N*sizeof(int));
for(i=0; i<N; i++){
a[i] = rand()%1000;
printf("%d ", a[i]);
}
printf("\n");
quickSort(a, 0, N-1);
for(i=0; i<N; i++){
printf("%d ", a[i]);
}
printf("\n");
}
算法c语言实现 7-1 快速排序
最新推荐文章于 2024-05-16 02:47:15 发布