C++排序-2

來源:互聯網
上載者:User

標籤:rand   ios   cto   c++   ret   algorithm   end   return   堆排序   

4、歸併排序

#include <vector>#include <iostream>#include <random>#include <algorithm>using namespace std;void MergeSort(vector<int> &data, vector<int> &cdata, int p, int r);void Merge(vector<int> &data, vector<int> &cdata, int p, int q, int r);void MergeSort(vector<int> &data){    vector<int> cdata(data.size());    MergeSort(data, cdata, 0, data.size() - 1);}void MergeSort(vector<int> &data, vector<int> &cdata, int p, int r){    if (p < r) {        int q = (p + r) / 2;        MergeSort(data, cdata, p, q);        MergeSort(data, cdata, q + 1, r);        Merge(data, cdata, p, q, r);    }}void Merge(vector<int> &data, vector<int> &cdata, int p, int q, int r){    for (int i = p; i <= r; ++i)        cdata[i] = data[i];    int i = p, j = q + 1, k = p;    while (i <= q && j <= r) {        if (cdata[i] <= cdata[j])            data[k++] = cdata[i++];        else            data[k++] = cdata[j++];    }    while (i <= q)        data[k++] = cdata[i++];    while (j <= r)        data[k++] = cdata[j++];}int main(int argc, char *argv[]){    vector<int> data1 = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };    vector<int> data2;    default_random_engine dre(7);    uniform_int_distribution<int> di(-100, 100);    for (int i = 0; i < 50; ++i)        data2.push_back(di(dre));    MergeSort(data1);    for (auto i : data1)        cout << i << " ";    cout << endl;    MergeSort(data2);    for (auto i : data2)        cout << i << " ";    cout << endl;    return 0;}

5、堆排序

 

C++排序-2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.