堆排序c++實現
void heapSort(vector<int>& arr, int n){
//初始化堆,使其形成大頂堆
for(int i = n / 2 - 1; i >= 0; i--){
adjust(arr, n, i);
}
for(int i = n - 1; i >= 0; i--){
int temp = arr[i];
arr[i] = arr[0];
arr[0] = temp;
adjust(arr, i, 0);
}
}
void adjust(vector<int>& arr, int n, int i){
int min = i;
int l = 2 * i + 1;
int r = 2 * i + 2;
if(l < n && arr[l] < arr[min]){
min = l;
}
if(r < n && arr[r] < arr[min]){
min = r;
}
if(min != i){
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
adjust(arr, n, min);
}
}
相關文章
- 堆排序(實現c++)排序C++
- 堆排序(C++)排序C++
- js 實現堆排序JS排序
- 使用 Swift 實現堆排序Swift排序
- 【轉】堆排序Heap Sort——Java實現排序Java
- PHP 實現堆, 堆排序以及索引堆PHP排序索引
- 常見演算法 PHP 實現 -- 堆排序演算法PHP排序
- 大根堆和堆排序的原理與實現排序
- [C++]實現memcpyC++memcpy
- 命令模式(c++實現)模式C++
- LinkBlockedQueue的c++實現BloCC++
- c++實現Json庫C++JSON
- 堆排序的Python實現(附詳細過程圖和講解)排序Python
- 利用java實現插入排序、歸併排序、快排和堆排序Java排序
- 看懂堆排序——堆與堆排序(三)排序
- 字典樹及其C++實現C++
- 單例模式c++實現單例模式C++
- 享元模式(c++實現)模式C++
- 狀態模式(c++實現)模式C++
- 中介者模式(c++實現)模式C++
- 模板方法模式(c++實現)模式C++
- C++程式設計實現C++程式設計
- 橋接模式(c++實現)橋接模式C++
- FastASR——PaddleSpeech的C++實現ASTC++
- 折半查詢(C++實現)C++
- c++ web框架實現之靜態反射實現C++Web框架反射
- 堆排序排序
- 排序演算法:堆排序的實現和時間複雜度分析排序演算法時間複雜度
- HTTPS通訊的C++實現HTTPC++
- C++ 實現Golang裡的deferC++Golang
- C++實現Prim演算法C++演算法
- 原型模式的C++實現原型模式C++
- 迴圈佇列C++實現佇列C++
- [C++ & AdaBoost] 傻陳帶你用C++實現AdaBoostC++
- C++庫封裝JNI介面——實現java呼叫c++C++封裝Java
- C++筆記——C++基本思想與實現(一)C++筆記
- python 堆排序Python排序
- js堆排序JS排序