Sort

来源:互联网 发布:日式装修风格知乎 编辑:程序博客网 时间:2024/06/07 23:37
堆排序,具有空间原址性:任何时候都只需要常数个额外的元素空间存储临时数据。
怎么体现出空间原址性?(问题一)

利用同一存储单元存储计算输入、输出数据的方法。


应用场景选择排序算法:
摘自http://blog.csdn.net/mbuger/article/details/67643185
(1)若n较小(如n≤50),可采用直接插入或直接选择排序。
 当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。
(2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜;
(3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。
 快速排序是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;
 堆排序所需的辅助空间少于快速排序,并且不会出现快速排序可能出现的最坏情况。这两种排序都是不稳定的。
 若要求排序稳定,则可选用归并排序。但前面介绍的从单个记录起进行两两归并的排序算法并不值得提倡,
  通常可以将它和直接插入排序结合在一起使用。先利用直接插入排序求得较长的有序子序列,然后再两两归并之。

  因为直接插入排序是稳定 的,所以改进后的归并排序仍是稳定的。


我学算法的目的,暂时是为了锻炼数学思维,用程序的思维来理解,来解决问题。暂时没到要写算法的那中程度,所以暂时的学习深度是理解知道哪种场景用什么就行。

原创粉丝点击