算法導論快速排序之python和c++實現

1.快速排序

快速排序是一種比較快的排序算法,其主要思想是:

具體思想不再贅述。下面給出具體代碼實現。

2.python3實現

#quick sort
#python3
#Yanglin Tu


def partition(arr, p, r):
    x = arr[r]
    i = p-1
    for j in range(p, r):
        if arr[j] <= x:
            i += 1
            arr[i], arr[j] = arr[j], arr[i]
    arr[i+1], arr[r] = arr[r], arr[i+1]
    return i+1


def quicksort(arr, p, r):
    if p < r:
        q = partition(arr, p, r)
        quicksort(arr, p, q-1)
        quicksort(arr, q+1, r)


def main():
    list_a = [20, 5, 7, 1, 66, 47, 5, 18]
    print(list_a)
    length = len(list_a)
    quicksort(list_a, 0, length-1)
    print(list_a)


if __name__ == '__main__':
 	main()

3.C++實現

//quick sort
//C++
//Yanglin Tu
#include <iostream>
using namespace std;

void swap(int &a,int &b){
    int temp;
    temp = a;
    a = b;
    b = temp;
}
int partition(int arr[],int p,int r){
    int x,i;
    x = arr[r];
    i = p-1;
    for (int j=p;j<r;j++){
        if(arr[j]<=x){
            int temp;
            i += 1;
            swap(arr[j],arr[i]);
        }
    }
    swap(arr[i+1],arr[r]);
    return i+1;
}
void quicksort(int arr[],int p,int r){
    if (p<r){
        int q = partition(arr,p,r);
        quicksort(arr,p,q-1);
        quicksort(arr,q+1,r);
    }
}
int main(){
    int i;
    int list_a[] = {20, 5, 7, 1, 66, 47, 5, 18};
    int length = sizeof(list_a) / sizeof(int);
    for (i = 0; i < length; i++)
        cout << list_a[i] << '\t';
    cout << endl;
    quicksort(list_a, 0, length - 1);
    for (i = 0; i < length; i++)
        cout<< list_a[i] << '\t';
    cout << endl;
    return 0;
}

4.快速排序的時間複雜度爲O(nlgn)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章