ヒープソートの実装に失敗します

前提

ヒープソートを実装したいです。

実現したいこと

発生している問題・エラーメッセージ

535 725 649 643 963 393 279 188 166 163

該当のソースコード

C++

#include<bits/stdc++.h>using namespace std;#include<time.h> void pushdown(vector<int>&A, int first, int last){ int i = first; while(i <= (last-1) / 2){ int j; if(A[(2*i+1)] < A[(2*i+2)]){ //小さいほうの子の番号 j = (2*i+1); } else j = (2*i+2); if(A[j] < A[i]){ //子が親より小さかった場合 swap(A[i], A[j]); i = j; } else return; }} void HeapSort(vector<int>&A){ int n = A.size(); vector<int> B; for(int irev = 0; irev <= n/2; irev++) { int i = n/2 - irev; pushdown(A, i, n-1); } for(int irev = 1; irev <= n-1; irev++){ int i = n - irev; swap(A[0], A[i]); pushdown(A, 0, i-1); } } int main(){ vector<int> a = {963,643,163,535,725,188,649,279,393,166}; HeapSort(a); for (int i = 0; i< 10; i++){ cout << a[i] << " "; }}

試したこと

サンプルコードを参照しながら怪しい部分を書き換えました。

補足情報(FW/ツールのバージョンなど)

コメントを投稿

0 コメント