常用排序算法——堆排序
2013-12-27 10:17
141 查看
堆排序的逻辑非常简单,但是效率较高,代码如下:
本文链接:/article/1339454.html
本文作者:girlkoo
#include <iostream> #include <vector> class heap { public: heap(int* array, size_t len):arr (array), length(len){ size_t point = (length -1)/2; for(size_t i = 0; i != point; ++i){ adjust(point-i, length); } } void sort(){ int tmp; for(size_t i = 0; i != length; ++i){ tmp = arr[0]; arr[0] = arr [length-1-i]; arr[length -1-i] = tmp; adjust(0, length-1-i); } } ~heap(){} private: void adjust( size_t pos, size_t len){ size_t next; for(int tmp = arr[pos]; 2*pos+1 < len; pos = next){ next = 2*pos+1; if(next < len-1 && arr [next] < arr[next+1]){ ++next; } if(tmp < arr [next]){ arr[pos] = arr [next]; arr[next] = tmp; } } } private: int* arr ; size_t length ; }; int main(){ int array[10] = {9, 5, 7, 4, 8, 1, 3, 4, 6, 5}; heap h(array, 10); h.sort(); for(size_t i = 0; i != 10; ++i){ std::cout << array[i] << " "; } std::cout << std:: endl; return 0; }
本文链接:/article/1339454.html
本文作者:girlkoo
相关文章推荐
- 几种常用的排序算法(快速排序,希尔排序,堆排序,选择排序,冒泡排序)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 冒泡排序、插入排序、选择排序、希尔排序、堆排序、归并排序等常用排序算法的比较
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 【Java常用排序算法】选择排序(简单选择排序、堆排序)
- 常用的排序算法(快速排序、插入排序、希尔排序、堆排序、冒泡排序、选择排序、归并排序)
- 【算法之常用排序算法(一)】八大常用内部排序算法(快排、冒泡、希尔、堆排序等)
- 常用排序算法C++实现(堆排序,快速排序,归并排序,基数排序)
- 冒泡排序、插入排序、选择排序、希尔排序、堆排序、归并排序等常用排序算法的比较
- 常用的排序算法:冒泡,简单选择,直接插入,快速排序,堆排序
- 【Java】八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序
- golang实现常用排序算法 --- 快速排序、堆排序等
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 排序算法总结-插入排序、希尔排序、堆排序、快速排序
- js实现各种常用排序算法
- 排序算法之堆排序(HeapSort)
- Python常用排序算法
- Java实现的几个常用排序算法详细解读
- java中常用的几种排序算法
- 几种常用排序算法总结