C++排序

  1. 最好的排序就是std::sort()

     如果你非要某一种具体排序,时间复杂度没法卡,因为输入就是ON了

     链表提供一个成员函数来排序,而且参数为空;链表排序的两个之间不会交换,还有一个好处在于稳定排序 标准库提供stablesort

  2. 稳定排序Stable sort
    1.   和效率没关系,说的不是效率稳定
    2. 比方说整数序列带颜色,红色的3在蓝色3前面,排序后依然在前面。
    3. 相同关键字的元素位置排序后位置相对不变
    4. 归并排序是,基数排序,箱子排序也是。快速排序不是
  3. 箱子排序bin-sort
    1.   依赖于forward-list来实现,总是队首删除,队首插入
    2. 依赖于链表的不断从头到尾的删除和插入另一个,最后是从末尾开始插入总的排序结果
    3. 适用于range比较小的情况,这样才能放下足够的箱子
    4. 要重载输出和不等于运算符 判断是不是这个箱子属于,要重载类型转换到int的函数,用来比较
  4. 基数排序
    1.   比较高级一点的箱子排序,适用于n比较大的情况

       分解方法:由低到高,为什么100会有后面的小数点呢?因为100只是箱子·范围,不是数的范围

    2. 桶排序

  5. 冒泡排序Bubble sort
    1.   思想

       

  6. 快速排序quicksort
    1.   分治策略,减少比较次数

       

    2. 如何选择基准元素,初始是啊a[0]

    3. 如何建立分区Partition算法 利用左右指针扫描得到两个元素交换位置

    4. 快速排序的改进

  7. 选择排序之堆排序
    1.   直接选择排序  堆排序首先要从上到下,从左到右构建完全二叉

       构造完成后从第一个飞叶子节点开始比较它和孩子叶子的大小,假设是升序用大根堆排序,比它大的孩子交换位置。然后是下一个非叶子节点

    2. 堆顶元素就是最大值,最大值交换之前序列的最末尾元素,然后用剩下的元素继续构造大根堆

    3. 性能分析

  8. 直接插入排序之希尔排序
    1.   算法思想

    2. 性能

  9. 希尔排序——分组插入排序
    1.   思想

    2. 性能

  10. 归并排序
    1.  分治思想

    2.  

      Merge算法 老生常谈了,不知道你还是会不会

    3.  

      自然归并排序

  11. 排序结论
    1. 效率

posted @   SunShine789  阅读(51)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示