#include <cstdlib> #include <iostream> #include <vector> #include <algorithm> //#include <cmath> using namespace std; int const MAX = 100; int calPart(vector<int> &arr, int low, int high) { int partPos = low; int base = arr.at(low); for(int i=low + 1; i<=high; i++) { if(arr.at(i) < base && ++ partPos != i) swap(arr[i], arr[partPos]); } swap(arr[low], arr[partPos]); return partPos; } void quickSort(vector<int> &arr, int left, int right) { if(left < right) { int partPos = calPart(arr, left, right); quickSort(arr, left, partPos - 1); quickSort(arr, partPos + 1, right); } } int main(int argc, char *argv[]) { freopen("out.txt", "wt", stdout); vector<int> array; srand(0); cout << "before sort: " << endl; for(int i=0; i<10; i++) { int temp = rand() % MAX; array.push_back(temp); cout << temp << " "; } cout << endl; quickSort(array, 0, array.size() - 1); cout << "after sort: " << endl; for(int i=0; i<10; i++) cout << array.at(i) << " "; cout << endl; system("PAUSE"); return EXIT_SUCCESS; }