堆排序

来源:互联网 发布:spss syntax 导入数据 编辑:程序博客网 时间:2024/06/03 18:54
#include<iostream>#include<vector>using namespace std;void AdustDown(vector<int> &arr,int curr,int len) {int child;while(curr * 2 + 1 <= len) {child = curr * 2 + 1;if (child + 1 <= len) {if (arr[child] < arr[child + 1]) {child++;}}if (arr[curr] < arr[child]) {swap(arr[curr],arr[child]);curr = child;}else {break;}}}int main() {vector<int> arr = {5,7,3,2,13,6,2,1,6,9,89,54,234,978,6,454,8789,438,654,4,3213,435,56,456};for (int i = (arr.size()-1) / 2; i >= 0; i--) {AdustDown(arr, i,arr.size()-1);}for (int i = arr.size() - 1; i >= 0; i--) {swap(arr[0], arr[i]);AdustDown(arr, 0, i-1);}for (int i = 0; i < arr.size(); i++) {cout << arr[i] << endl;}return 0;}

原创粉丝点击