排序算法@c++描述-堆排序

3.堆排序

#include <iostream>
#include <vector>

using namespace std;

inline int leftChild(int i)
{
    return 2 * i + 1;
}

template <typename T>
void percDown(vector<T> &a, int i, int n)
{
    int child;
    T tmp;
    for (tmp = a[i]; leftChild(i) < n; i = child) {
        child = leftChild(i);
        if (child != n - 1 && a[child] < a[child + 1])
            child++;
        if (tmp < a[child])
            a[i] = a [child];
        else
            break;
    }
    a[i] = tmp;
}

template <typename T>
void heapSort(vector<T> &a)
{
    /*build heap*/
    for (int i = a.size() / 2 - 1; i >= 0; i--)
        percDown(a, i, a.size());
    /*delete max*/
    for (int j = a.size() - 1; j > 0; j--) {
        swap(a[0], a[j]);
        percDown(a, 0, j);
    }
}

int main()
{
    vector<int> test = {190, 435, 834, 8954, 923, 56, 20 ,1, 934, 5465, 504, 23054, 430};
    heapSort(test);
    for (auto i : test)
        cout << i << " ";
    cout << endl;
    return 0;
}
  • 運(yùn)行結(jié)果:
$ ./a.out
1 20 56 190 430 435 504 834 923 934 5465 8954 23054

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,324評(píng)論 25 708
  • 在此特此聲明:一下所有鏈接均來自互聯(lián)網(wǎng),在此記錄下我的查閱學(xué)習(xí)歷程,感謝各位原創(chuàng)作者的無私奉獻(xiàn) ! 技術(shù)一點(diǎn)一點(diǎn)積...
    遠(yuǎn)航的移動(dòng)開發(fā)歷程閱讀 11,556評(píng)論 12 197
  • 7.16號(hào)見到了歌神張學(xué)友,整場(chǎng)演唱會(huì)無尿點(diǎn)。場(chǎng)地是奧林匹克體育場(chǎng),中心舞臺(tái),360度無死角帥到爆炸,剛看到舞臺(tái)的...
    有耐心有信心閱讀 366評(píng)論 0 0
  • 最近,《沃茲傳:與蘋果一起瘋狂》在多看閱讀上線,看過試讀版以后,雖然購(gòu)買要25塊大洋,還是果斷購(gòu)入。本書從各個(gè)方面...
    gzb1985閱讀 1,287評(píng)論 1 2
  • 在linux下,各種軟件的配置文件大多存儲(chǔ)于以“.”開頭以“rc”結(jié)尾的文件中并存放于用戶的個(gè)人目錄~/中,也就是...
    wty21cn閱讀 3,613評(píng)論 0 1

友情鏈接更多精彩內(nèi)容