排序在程序设计中是十分重要的领域。目前已经存在各种各样的算法,它们分别各有自己的优缺点。这些算法的相关信息:http://blog.csdn.net/hguisu/article/details/7776068
然而真正在实际使用时,只依靠某个算法是行不通。通常需要多种算法结合,并进行优化。本文以STL中的sort()函数为例:
sort()函数内部使用的是一种经过各种优化的名为introsort的排序算法。该算法的具体流程:当个数小于一定的门限值时,采用插入算法;当个数大于门限值,采用快速排序;当快速排序分割行为有恶化为二次行为的倾向时,能够自我侦测,转而改用Heap Sort