冒泡排序
冒泡排序重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
对冒泡排序常见的改进方法是加入标志性变量exchange,用于标志某一趟排序过程中是否有数据交换。
如果进行某一趟排序时并没有进行数据交换,则说明所有数据已经有序,可立即结束排序,避免不必要的比较过程。
直接插入排序
直接插入排序,每次将一个新数据插入到有序队列中的合适位置里。
因为在一个有序序列中查找一个插入位置,以保证有序序列的序列不变,所以可以使用二分查找,减少元素比较次数提高效率。
希尔排序
快速排序
当数据有序时,以第一个关键字为基准分为两个子序列,前一个子序列为空,此时执行效率最差。
所以,数据越随机分布时,快速排序性能越好;数据越接近有序,快速排序性能越差。
堆排序
如何确定最后一个非叶子结点?
其实这是有一个公式的,设二叉树结点总数为 n,则最后一个非叶子结点是第 ⌊n/2⌋ 个
简单选择排序
归并排序
治阶段:
基数排序