zoukankan      html  css  js  c++  java
  • 一些杂七杂八的东西。

    一、关于排序

    排序的稳定性和复杂度

          不稳定(有跨度的交换都会导致不稳定):

          选择排序(selection sort)— O(n2)

          快速排序(quicksort)— O(nlogn) 平均时间, O(n2) 最坏情况; 对于大的、乱序串列一般认为是最快的已知排序

          堆排序 (heapsort)— O(nlogn)

          希尔排序 (shell sort)— O(nlogn)

          基数排序(radix sort)— O(n·k); 需要 O(n) 额外存储空间 (K为特征个数)

          稳定(线性排序):

          插入排序(insertion sort)— O(n2)

          冒泡排序(bubble sort) — O(n2)

          归并排序 (merge sort)— O(n log n); 需要 O(n) 额外存储空间

          二叉树排序(Binary tree sort) — O(nlogn); 需要 O(n) 额外存储空间

          计数排序  (counting sort) — O(n+k); 需要 O(n+k) 额外存储空间,k为序列中Max-Min+1

          桶排序 (bucket sort)— O(n); 需要 O(k) 额外存储空间

     其他比较

      插入、冒泡排序的速度较慢,但参加排序的序列局部或整体有序时,这种排序能达到较快的速度。在这种情况下,快速排序反而慢了。

      当n较小时,对稳定性不作要求时宜用选择排序,对稳定性有要求时宜用插入或冒泡排序。

      若待排序的记录的关键字在一个明显有限范围内时,且空间允许是用桶排序。

      当n较大时,关键字元素比较随机,对稳定性没要求宜用快速排序。

      当n较大时,关键字元素可能出现本身是有序的,对稳定性有要求时,空间允许的情况下宜用归并排序。

      当n较大时,关键字元素可能出现本身是有序的,对稳定性没有要求时宜用堆排序。

      快排是目前基于比较的内部排序中被认为最好的方法,当待排序的关键字是随机分布时,快排所用的平均时间最短。

     

    二、常见的递推关系

    卡特兰数:凸n边形的三角形剖分问题,二叉树数目问题,出栈序列

    第二类stirling数:放置小球,集合划分问题

    集合取数问题

    整数划分问题

    三、排列组合

    • 插入法,捆绑法,剩余法,对等法,排异法(注意正难则反及逆向思维)

    • 圆周排列
    • 有重复元素的排列问题

    • 错排问题

    四、二叉树的遍历问题

    五、一些逻辑运算

  • 相关阅读:
    记录Log4Net的使用
    利用Ihttpmodel实现网站缓存,解决Server.Transfer 直接输出HTML源代码的问题
    ASP.NET利用byte检测上传图片安全
    通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)-大壮他哥
    winform利用代码将控件置于顶端底端
    查询
    字符数组实例化
    三维数组
    填充和批量替换
    遍历二维数组
  • 原文地址:https://www.cnblogs.com/Aze-qwq/p/9768418.html
Copyright © 2011-2022 走看看