1. 程式人生 > >兩種風格的快速排序 Quick Sort

兩種風格的快速排序 Quick Sort

啊哈演算法中的quick_sort.cpp


//
// Created by jal on 18-9-2.
//
#include <bits/stdc++.h>

using namespace std;

void quick_sort(int*a, int left, int right){
    if(left > right){
        return;
    }
    int j = right;
    int i = left;
    while(i != j){
        while(a[j] >= a[left] && i < j)j--;
        while
(a[i] <= a[left] && i < j)i++; if(i < j){ swap(a[i],a[j]); } } swap(a[left], a[j]); quick_sort(a, left, j-1); quick_sort(a, j+1, right); } int main() { int a[10] = {4, 3, 5, 3, 6, 1, 2, 9, 8, 7}; int len = sizeof(a) / sizeof(a[0]); quick_sort(a,0
, len-1); copy(a, a + len, ostream_iterator<int>(cout, " ")); }

慕課網中的quick_sort.cpp


//
// Created by jal on 18-9-2.
//
#include <bits/stdc++.h>

using namespace std;

int partion(int *a,int left,int right){
    int key = a[left];
    int i = left;
    for(int j = i+1; j <= right; j++){
        if
(a[j] < key){ swap(a[i+1], a[j]); i++; } } swap(a[left], a[i]); return i; } void quick_sort(int*a, int left, int right){ if(left >= right){ return; } int p = partion(a, left, right); quick_sort(a, left, p-1); quick_sort(a, p+1, right); } int main() { int a[10] = {4, 3, 5, 3, 6, 1, 2, 9, 8, 7}; int len = sizeof(a) / sizeof(a[0]); quick_sort(a,0, len-1); copy(a, a + len, ostream_iterator<int>(cout, " ")); }