C++排序-1

來源:互聯網
上載者:User

標籤:希爾   clu   code   name   運行時   vector   ios   ret   return   

1、選擇排序

#include <vector>#include <iostream>#include <random>#include <algorithm>using namespace std;void SelectionSort(vector<int> &data){    for (int i = 0; i < data.size(); ++i) {        int tmp = i;        for (int j = i + 1; j < data.size(); ++j) {            if (data[j] < data[tmp]) {                tmp = j;            }        }        if (tmp != i)            swap(data[tmp], data[i]);    }}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;    uniform_int_distribution<int> di(-100, 100);    for (int i = 0; i < 50; ++i)        data2.push_back(di(dre));    SelectionSort(data1);    for (auto i : data1)        cout << i << " ";    cout << endl;    SelectionSort(data2);    for (auto i : data2)        cout << i << " ";    cout << endl;    return 0;}

2、冒泡排序

#include <vector>#include <iostream>#include <random>#include <algorithm>using namespace std;void BubbleSort(vector<int> &data){    for (int i = 0; i < data.size(); ++i) {        for (int j = data.size() - 1; j > i; --j) {            if (data[j] < data[j - 1])                swap(data[j], data[j - 1]);        }    }}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;    uniform_int_distribution<int> di(-100, 100);    for (int i = 0; i < 50; ++i)        data2.push_back(di(dre));    BubbleSort(data1);    for (auto i : data1)        cout << i << " ";    cout << endl;    BubbleSort(data2);    for (auto i : data2)        cout << i << " ";    cout << endl;    return 0;}

3、插入排序

#include <vector>#include <iostream>#include <random>#include <algorithm>using namespace std;void InsertionSort(vector<int> &data){    for (int i = 1; i < data.size(); ++i) {        int tmp = data[i];        int j = i - 1;        while (j >= 0 && data[j] > tmp) {            data[j + 1] = data[j];            --j;        }        data[j + 1] = tmp;    }}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;    uniform_int_distribution<int> di(-100, 100);    for (int i = 0; i < 50; ++i)        data2.push_back(di(dre));    InsertionSort(data1);    for (auto i : data1)        cout << i << " ";    cout << endl;    InsertionSort(data2);    for (auto i : data2)        cout << i << " ";    cout << endl;    return 0;}

4、希爾排序

希爾排序的已耗用時間與增量序列的選擇相關。下面程式增量序列的選擇時間複雜度為O(n3/2)。

#include <vector>#include <iostream>#include <random>#include <algorithm>using namespace std;void ShellSort(vector<int> &data){    int gap = 1;    while (gap < data.size())        gap = gap * 3 + 1;    for (; gap > 0; gap /= 3) {        for (int i = gap; i < data.size(); ++i) {            int tmp = data[i];            int j = i - gap;            while (j >= 0 && data[j] > tmp) {                data[j + gap] = data[j];                j -= gap;            }            data[j + gap] = tmp;        }    }}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;    uniform_int_distribution<int> di(-100, 100);    for (int i = 0; i < 50; ++i)        data2.push_back(di(dre));    ShellSort(data1);    for (auto i : data1)        cout << i << " ";    cout << endl;    ShellSort(data2);    for (auto i : data2)        cout << i << " ";    cout << endl;    return 0;}

C++排序-1

聯繫我們

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