快速排序,C++實現

 // 快速排序
 void quick_sort(vector<int>& a, int low, int high) {
        if (low >= high) {
            return;
        }
        auto pos = partition(a, low, high);   // 取一個基準元素,將元素分爲小於基準元素的左半邊和大於基準元素的右半邊
        quick_sort(a, low, pos - 1);   // 對左半邊進行遞歸
        quick_sort(a, pos + 1, high);  // 對右半邊進行遞歸
    }
    
// 取一個基準元素,將元素分爲小於基準元素的左半邊和大於基準元素的右半邊
    int partition(vector<int>& a, int low, int high) {
        if (low < high) {
            int t = a[low];  // 選擇第一個爲基準元素
            while (low < high) {
                while (low < high && a[high] >= t) {
                    --high;
                }
                a[low] = a[high];
                while (low < high && a[low] <= t) {
                    ++low;
                }
                a[high] = a[low];
            }
            a[low] = t;
        }
        return low;
    }
// 主函數
int main() {
    vector<int> nums{ 5,2,3,1 }; // 示例
    int nums_size = nums.size();
        if (nums_size > 0) {
            quick_sort(nums, 0, nums_size - 1);
        }
    for (auto it : nums) {
        cout  << it << " ";
    }
   cout <<endl;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章