您的位置:首页 > 其它

qsort原理和实现

2015-09-23 21:28 190 查看
#include <iostream>
#include <stdlib.h>
#include <ctime>
using namespace std;

// 确定快速排序中间值那个位置,用来进行比较
// 左边的值 < 右边的值
int prtition(int *A, int p, int r)
{
int i,j,x;
x = A[r];
i= p-1;
for(j=p; j<r; j++)
{
if(A[j] <= x)
{
i++;
swap<int>(A[i], A[j]);
}
}
swap<int>(A[i+1], A[r]);
return i+1;
}

// 快速排序算法, 递归
void quicksort(int *A, int p, int r)
{
if(p >= r)
return ;
int q = prtition(A,p,r);
quicksort(A,p,q-1);
quicksort(A,q+1,r);
}
// 排序后结果显示
void show(int *A, int p,int r)
{
for(int i=p; i<=r; i++)
cout << A[i] << " ";
cout << endl;
}

int main()
{
int i;
int A[10];
srand((unsigned int)time(NULL));
for(i=0; i<10; i++)
A[i] = rand() % 20;
Show(A,0,9);
quicksort(A,0,9);
Show(A,0,9);
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qsort 快速排序