堆排序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++
- 實現堆排序排序
- js 實現堆排序JS排序
- 堆排序(php實現)排序PHP
- 堆排序(C++)排序C++
- 使用 Swift 實現堆排序Swift排序
- 【轉】堆排序Heap Sort——Java實現排序Java
- PHP 實現堆, 堆排序以及索引堆PHP排序索引
- 常見演算法 PHP 實現 -- 堆排序演算法PHP排序
- 大根堆和堆排序的原理與實現排序
- Java實現HEAPSORT堆排序演算法Java排序演算法
- [C++]實現memcpyC++memcpy
- C++ binder 實現C++
- MYSQL實現ORDER BY LIMIT的方法以及優先佇列(堆排序)MySqlMIT佇列排序
- 完全二叉樹實現優先佇列與堆排序二叉樹佇列排序
- 利用java實現插入排序、歸併排序、快排和堆排序Java排序
- 命令模式(c++實現)模式C++
- 看懂堆排序——堆與堆排序(三)排序
- 堆排序排序
- 堆排序的Python實現(附詳細過程圖和講解)排序Python
- 排序演算法:堆排序的實現和時間複雜度分析排序演算法時間複雜度
- 享元模式(c++實現)模式C++
- 中介者模式(c++實現)模式C++
- 橋接模式(c++實現)橋接模式C++
- 模板方法模式(c++實現)模式C++
- 狀態模式(c++實現)模式C++
- 字典樹及其C++實現C++
- 折半查詢(C++實現)C++
- C++程式設計實現C++程式設計
- LinkBlockedQueue的c++實現BloCC++
- hanoi漢諾塔C++實現C++
- C++實現蛇形矩陣C++矩陣
- C++實現單例模式C++單例模式
- C++實現工廠模式C++模式
- 單例模式c++實現單例模式C++
- c++ web框架實現之靜態反射實現C++Web框架反射
- 貝葉斯實現文字分類C++實現文字分類C++
- 【資料結構】堆排序和模擬實現優先順序佇列!!資料結構排序佇列