您的位置:首页 > 其它

手写的qsort快速排序

2015-05-25 12:39 330 查看
//手写快排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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: