//手写快排qsort的模板函数
void qsort(int* a, int left, int right) {
if(left+1 >= right) return ;
int i = left, j = right-1, key = a[left];
while(i < j) {
while(i < j && key <= a[j]) j--;
a[i] = a[j];
while(i < j && a[i] <= key) i++;
a[j] = a[i];
}
a[i] = key;
qsort(a, left, i);
qsort(a, i+1, right);
}
//.................................................................................................................
//例子
#include<stdio.h> //快速排序的例子
void qsort(int* a, int left, int right) {
if(left+1 >= right) return ;
int i = left, j = right-1, key = a[left];
while(i < j) {
while(i < j && key <= a[j]) j--;
a[i] = a[j];
while(i < j && a[i] <= key) i++;
a[j] = a[i];
}
a[i] = key;
qsort(a, left, i);
qsort(a, i+1, right);
}
int main() {
int a[11] = {0, 2, 3, 1, 3,5,34,2,1,4,6};
qsort(a, 0, 11);
for(int i = 0; i < 11; i++) printf("%d ", a[i]);
return 0;
}
手写的qsort快速排序
最新推荐文章于 2024-04-06 18:26:38 发布