C++ Primer 学习中。
。
。
简单记录下我的学习过程 (代码为主)
/***************************************** STL-算法--Heap算法 堆排序算法 (heapsort) make_heap() //把容器内的数据做堆排序 push_heap() //向堆内放入元素 pop_heap() //删除堆顶元素 sort_heap() //把堆排还原成普通排序 *****************************************/ /**---------------------------------------------------------------------------------- make_heap(b,e) 9 make_heap(b,e,cp) / \ push_heap(b,e) 8 6 push_heap(b,e,cp) / \ / \ pop_heap(b,e) 7 7 5 5 pop_heap(b,e,cp) / \ / \ / \ / sort_heap(b,e) 3 6 4 1 2 3 4 sort_heap(b,e,cp) ----------------------------------------------------------------------------------**/
/**------http://blog.csdn.net/u010579068------**/#include#include #include #include #include #include
#include using namespace std;/*****************************************STL-算法--Heap算法堆排序算法 (heapsort)make_heap() //把容器内的数据做堆排序push_heap() //向堆内放入元素pop_heap() //删除堆顶元素sort_heap() //把堆排还原成普通排序*****************************************//**----------------------------------------------------------------------------------make_heap(b,e) 9make_heap(b,e,cp) / \push_heap(b,e) 8 6push_heap(b,e,cp) / \ / \pop_heap(b,e) 7 7 5 5pop_heap(b,e,cp) / \ / \ / \ /sort_heap(b,e) 3 6 4 1 2 3 4sort_heap(b,e,cp)----------------------------------------------------------------------------------**//*************************************************************************************std::make_heap 全部排序容器适用 algorithm--------------------------------------------------------------------------------------template void make_heap ( RandomAccessIterator first, RandomAccessIterator last );template void make_heap ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );//eg:*************************************************************************************//*************************************************************************************std::push_heap 全部排序容器适用 algorithm--------------------------------------------------------------------------------------template void push_heap ( RandomAccessIterator first, RandomAccessIterator last );template void push_heap ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );//eg:*************************************************************************************//*************************************************************************************std::pop_heap 全部排序容器适用 algorithm--------------------------------------------------------------------------------------template void pop_heap ( RandomAccessIterator first, RandomAccessIterator last );template void pop_heap ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );//eg:*************************************************************************************//*************************************************************************************std::sort_heap 全部排序容器适用 algorithm--------------------------------------------------------------------------------------template void sort_heap ( RandomAccessIterator first, RandomAccessIterator last );template void sort_heap ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );//eg:*************************************************************************************/template void Print(T& V){ typename T::iterator iter=V.begin(); while(iter != V.end()) { cout<<*iter++<<" "; } cout<
/*****************************************//Output:原数据:3 4 5 6 7 5 6 7 8 9 1 2 3 4堆排后:9 8 6 7 7 5 5 3 6 4 1 2 3 4删除后:8 7 6 7 4 5 5 3 6 4 1 2 3 9删除后:7 7 6 6 4 5 5 3 3 4 1 2 8加入数据后:7 7 6 6 4 5 5 3 3 4 1 2 15把最后一个数加入堆里:15 7 7 6 4 6 5 3 3 4 1 2 5还原堆排顺序:1 2 3 3 4 4 5 5 6 6 7 7 15*****************************************/