【演算法設計與分析】C++ 實現快速排序
阿新 • • 發佈:2020-12-12
#include <iostream>
using namespace std;
int Partition(int a[], int left, int right)
{
int i = left, j = right + 1;
int k = a[left];
while(1)
{
while(a[++i] < k && i < right);
while(a[--j] > k);
if(i >= j) break;
int t = a[i];
a[i] = a[j];
a[j] = t;
}
a[left] = a[j];
a[j] = k;
return j;
}
void QuickSort(int a[], int left, int right)
{
if(left < right)
{
int base = Partition(a, left, right);
QuickSort(a, left, base - 1);
QuickSort(a, base + 1, right);
}
}
int main()
{
int arr[] = {1, 4, 3, 2, 5, 7, 6};
QuickSort (arr, 0, 7);
for(int i = 0; i < 8; i++)
cout << arr[i] << " ";
cout << endl;
return 0;
}