当前位置:首页 / 文章测试 / C++堆排序

C++堆排序

开始打字练习

#include<iostream>

using namespace std;

const int N = 1e4 + 5, M = 1e4 + 5;

int a[N];

int n;

void show()

{

for(int i = 1; i <= n; i++)

cout << a[i] << ' ';

}

void adjust(int num, int parent)

{

int child = parent * 2;

if(child + 1 <= num && a[child] < a[child + 1])

child ++;

if(a[child] > a[parent])

{

swap(a[child], a[parent]);

if(child < num / 2)

adjust(num, child);

}

}

void heapSort()

{

for(int i = n; i > 1; i--)

{

for(int j = i / 2; j >= 1; j--)

adjust(i, j);

swap(a[1], a[i]);

}

}

int main()

{

cin >> n;

for(int i = 1; i <= n; i++)

cin >> a[i];

heapSort();

show();

return 0;

}

声明:以上文章均为用户自行发布,仅供打字交流使用,不代表本站观点,本站不承担任何法律责任,特此声明!如果有侵犯到您的权利,请及时联系我们删除。