123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
#include <iostream>#include <cstdlib>using namespace std; int num; void swap(int &a, int &b){int temp = a;a = b;b = temp;} void PrintArray(int *arr){for(int i=1; i<=num; ++i)cout << arr[i] << " ";cout << endl;} int Partition3(int *arr, int beg, int end){int sentinel = arr[end];int i = beg-1;for(int j=beg; j<=end-1; ++j){if(arr[j] <= sentinel){i++;swap(arr[i], arr[j]);}}swap(arr[i+1], arr[end]); cout << "排序过程:";PrintArray(arr);return i+1;} int RandomPartition(int *arr, int beg, int end){int i = beg + rand() % (end-beg+1);swap(arr[i], arr[end]);return Partition3(arr, beg, end);} void RandomQuickSort(int *arr, int beg, int end){if(beg < end){int pivot = RandomPartition(arr, beg, end);RandomQuickSort(arr, beg, pivot-1);RandomQuickSort(arr, pivot+1, end);}} int main(){int arr[100];cout << "Input the num of the elements:\n";cin >> num;cout << "Input the elements:\n";for(int i=1; i<=num; ++i)cin >> arr[i];RandomQuickSort(arr, 1, num);cout << "最后结果:";PrintArray(arr);return 0;}