C++模板实现堆排序
来源:互联网 发布:主持人辅助软件 编辑:程序博客网 时间:2024/05/29 09:13
堆的概念我在之前的文章中已经有说明,这里不再赘述.本小结的内容仅包括堆排序部分.
算法特点:
1.不稳定.
2.时间复杂度 O(nlog(n))
3.空间复杂度 O(nlog(n))
在堆删除节点的同时,正好可以巧妙的将该数据放置到数组被删掉的位置,最后得到排序好的数组(堆的根节点被弹出后,总是将最后节点重新放置到跟节点,这样,最后节点位置正好空出).
//Heapsort//1. Not Stable//2. Time complex O(nlog(n))//3. Space complecity, O(nlog(n))//4. No specialtemplate <typename T, unsigned int size>void Sort<T,size>::heapSort(T * const sortArray/*, const unsigned int size*/){ Heap<T, size> heap; TimeAndSpace timeAndSpace; //Construct the heap for (unsigned int i = 0; i < size; i++) { timeAndSpace = heap.AddElem(sortArray[i]); loopTimes += timeAndSpace.times; moveTimes += timeAndSpace.moves; } for (unsigned int i = 0; i < size; i++) { T value; timeAndSpace = heap.deleteElem(value); loopTimes += timeAndSpace.times; moveTimes += timeAndSpace.moves; sortArray[size - 1 - i] = value; } return;}
0 0
- C++模板实现堆排序
- 堆排序的C实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序C语言实现
- 堆排序--C语言实现
- C语言实现堆排序
- 堆排序(c实现)
- 堆排序--C语言实现
- 堆排序C语言实现
- 堆排序的实现(c++)
- C实现heap堆排序
- c/c++实现堆排序
- 堆排序C语言实现
- C语言实现堆排序
- 堆排序c语言实现
- 堆排序-C语言实现
- 响应式卡片
- HTTP 协议之压缩
- 哈夫曼树 九度1172
- Java面试题全集(上)
- Captcha Cracker
- C++模板实现堆排序
- GDOI第三轮模拟总结
- 《C++ Primer》第3章:字符串、向量和数组
- malloc和free
- Java 多线程(五)——线程通信(共享内存、管道流、wait()、notify()等)
- Android基本布局-RelativeLayout
- Java面试题全集(下)
- java线程的同步 排斥性与可见性
- MySQL经典问题