一些杂七杂八的东西。

一、关于排序

排序的稳定性和复杂度

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

      选择排序(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数:放置小球,集合划分问题

集合取数问题

整数划分问题

 

 

三、排列组合

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

 

 

 

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

 

 

  • 错排问题

 

 

四、二叉树的遍历问题

 

五、一些逻辑运算

 

转载于:https://www.cnblogs.com/Aze-qwq/p/9768418.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值