快速排序演算法(原理與實現),排序演算法原理實現

來源:互聯網
上載者:User

快速排序演算法(原理與實現),排序演算法原理實現
簡介:

快速排序(Quicksort)是對冒泡排序的一種改進。由C. A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列。

 

演算法思想:

設要排序的數組是A[0]……A[N-1],首先任意選取一個資料作為standard(通常選用數組的最後一個數)作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面(其實只要保證所有比他小的元素都在其前面,則後一條件則自動滿足了),這個過程稱為一趟快速排序。值得注意的是,快速排序不是一種穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算法結束時產生變動。(資訊來源:百度百科)

 

C++實現:

 

#include <iostream>#include <stdlib.h>#include <time.h>using namespace std;bool initArray(int *Array, int arraySize){    //初始化隨機種子    srand(time(NULL));    for (int i = 0; i != arraySize; ++i)    {        //給數組用隨機數賦值        Array[i] = rand();    }    return true;}/*劃分函數:    使得在Array[i+1]之前的元素都小於該元素    在Array[i+1]的元素都小於該元素*/template <typename T, typename Index_t>Index_t partition(T *Array, Index_t prev, Index_t tail){    T standard = Array[tail];    Index_t i = prev - 1;   //i以及i之前的數,都小於standard    for (Index_t j = prev; j != tail; ++j)    {        //數組的任意元素,只要其小於或等於standard,就將其換到數組的前半段        //(因此,數組的後半段都是大於standard的元素)        if (Array[j] <= standard)        {            ++ i;            swap(Array[i],Array[j]);        }    }    swap(Array[i+1],Array[tail]);    //將standard的地址返回    return i + 1;}template <typename T, class Index_t>void quickSort(T *Array, Index_t prev, Index_t tail){    if (prev < tail)    {        Index_t q = partition(Array,prev,tail);        //對數組的前半段進行劃分        quickSort(Array,prev,q-1);        //對數組的後半段進行劃分        quickSort(Array,q+1,tail);    }}int main(){    int arraySize = 10;    int *Array = new int[arraySize];    initArray(Array,arraySize);    quickSort(Array,0,arraySize-1);    for (int i = 0; i != arraySize; ++i)    {        cout << Array[i] << endl;    }    delete Array;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.