#include <iostream>
using namespace std;
int Partition(int* A, int low, int high) {
int Pivot = A[low];
while (low < high) { //比Pivot大的在右边,小的在左边
while (low < high && A[high] >= Pivot) high--;
A[low] = A[high];
while (low < high && A[low] < Pivot) low++;
A[high] = A[low];
}
A[low] = Pivot;
return low;
}
void QuickSort(int* A, int low, int high) {
if (low < high)
{
int pivotpos = Partition(A, low, high); //pivotpos左边比其小,右边比其大,所以分开继续用快速排序
QuickSort(A, low, pivotpos - 1);
QuickSort(A, pivotpos + 1, high);
}
}
void Print(int A[],int n) { //输出函数
for (int i = 0; i < n; i++) {
cout << A[i] << " ";
}
}
int main() {
int A[5] = { 50,10,20,30,8};
Print(A, 5);
cout << endl;
QuickSort(A, 0, 4);
Print(A, 5);
}
w-快速排序
最新推荐文章于 2024-10-05 21:10:28 发布