【手撕】快速排序
阿新 • • 發佈:2020-12-27
#include<iostream> #include<vector> using namespace std; void quick_sort(vector<int>& data, int left, int right) { if (left >= right) { return; } // 否則就開始在原陣列上選區基準值進行交換 int key = data[right]; // 選區最後一個數 int i = left - 1; for (int j = left; j < right; j++) {if (data[j] <= key) { i++; swap(data[i], data[j]); } } // 將基準值放到i+1的位置 swap(data[i + 1], data[right]); // i+1就是分界點 int index = i + 1; quick_sort(data, left, index - 1); quick_sort(data, index + 1, right); } int main() { vector<int> data; // 輸入要排序的數列 int n, d; cin >> n; // 輸入數列大小 while (n-- && cin >> d) // 迴圈輸入 { data.push_back(d); } int left = 0; int right = data.size() - 1; quick_sort(data, left, right); for (int i = 0; i <= right; i++) { cout << data[i] << ''; } cout << endl; return 0; }