用c++实现的快速排序的源代码如下:
#include <iostream>
#include <cstdlib>
using namespace std;
//划分算法
int Partition(int a[],int l,int r) {
int pilot = a[l]; //用序列的第一个记录作为基准
int i = l; int j = r;
while (i!=j) { //从序列的两端交替向中间扫描,直到i=j为止
while (j>i&&a[j]>= pilot) {
j--; //从右向左扫描,找第一个关键字小于pilot的a[j]
}
a[i] = a[j]; //将a[j]前移到a[i]的位置
while (i<j&&a[i] <= pilot) {
i++; //从左向右扫描,找第一个关键字大于pilot的a[i]
}
a[j] = a[i]; ////将a[i]后移到a[j]的位置
}
a[i] = pilot;
return i;
}
//快速排序
void QuickSort(int a[], int l, int r) { //对a[l,r]元素序列进行递增排序
if (l<r) { //序列中至少存在两个元素的情况
int i = Partition(a, l, r);
QuickSort(a,l,i-1); //对左子序列递归排序
QuickSort(a,i+1,r); //对右子序列递归排序
}
}
//输出数组
void display(int a[],int n) {
for (int i = 0; i < n;i++) {
cout << a[i]<<" ";
}
cout << endl;
}
int main() {
int n = 0;
cout << "请输入一个数组的元素个数" << endl;
cin >> n;
int *a = new int[n];
for (int i = 0; i < n;i++) {
cin >> a[i];
}
cout << "输出没排好序的数组元素";
display(a, n);
QuickSort(a,0,n-1);
cout << "输出排好序的数组元素";
display(a, n);
system("pause");
}