0%

交换排序

简介

基本思想

将待排序列中的相邻数据比较,大的下沉,小的上升

冒泡排序

基本思想

同交换排序

基本思路

相邻数比较

思路1

加入一标志性变量exchange,用于标志某一趟排序过程中是否有数据交换,如果进行某一趟排序时并没有进行数据交换,则说明数据已经按要求排列好,可立即结束排序

思路2

设置一标志性变量pos,用于记录每趟排序中最后一次进行交换的位置。由于pos位置之后的记录均已交换到位,故在进行下一趟排序时只要扫描到pos位置即可

思路3

在每趟排序中进行正向和反向两遍冒泡的方法一次可以得到两个最终值(最大者和最小者) , 从而使排序趟数几乎减少了一半;
即从当前值分别向前和向后冒泡

快速排序

基本思路

  1. 选择一个基准元素(通常是第一或最后一个)
  2. 遍历待排序列,将每个元素与基准元素比较,若基准元素小则将两个元素位置替换
  3. 遍历之后,此时基准元素在排好序后的正确位置
  4. 然后得到基准元素左(小)右(大)两个区间,分别对两个区间重复(1-4)步骤;
  5. 得到有序列表;

思路1

只对长度大于k的子序列递归调用快速排序,让原序列基本有序,然后再对整个基本有序序列用插入排序算法排序。实践证明,改进后的算法时间复杂度有所降低,且当k取值为 8 左右时,改进算法的性能最佳;