• 【整理】时间算法知识


     log(n)其实就相当于log2(n),这是在估算时间复杂度上面所用到的, 因为log的底数对于整个式子没有太大影响,

    在pascal中一般常数 级的变化都是可以忽略不记的,所以通常采用这种方法估读。

    排序的平均时间(最快+最慢/2)。
      在这个表格中,n是要被排序的纪录数量以及k是不同键值的数量。
    稳定的
      冒泡排序(bubble sort) — O(n2)
      鸡尾酒排序 (Cocktail sort, 双向的冒泡排序) — O(n2)
      插入排序 (insertion sort)— O(n2)
      桶排序 (bucket sort)— O(n); 需要 O(k) 额外 记忆体
      计数排序 (counting sort) — O(n+k); 需要 O(n+k) 额外 记忆体
      归并排序 (merge sort)— O(n log n); 需要 O(n) 额外记忆体
      原地归并排序 — O(n2)
      二叉树排序 (Binary tree sort) — O(n log n); 需要 O(n) 额外记忆体
      鸽巢排序 (Pigeonhole sort) — O(n+k); 需要 O(k) 额外记忆体
      基数排序 (radix sort)— O(n?k); 需要 O(n) 额外记忆体
      Gnome sort — O(n2)     
      Library sort — O(n log n) with high probability, 需要 (1+ε)n 额外记忆体
    不稳定
      选择排序 (selection sort)— O(n2)
      希尔排序 (shell sort)— O(n log n) 如果使用最佳的现在版本
      Comb sort — O(n log n)
      堆排序 (heapsort)— O(n log n)
      Smoothsort — O(n log n)
      快速排序 (quicksort)— O(n log n) 期望时间, O(n2) 最坏情况; 对於大的、乱数串列一般相信是最快的已知排序
      Introsort — O(n log n)
    Patience sorting — O(n log n + k) 最外情况时间, 需要 额外的 O(n + k) 空间, 也需要找到最长的递增子序列(longest increasing subsequence)
    各算法的时间复杂度
      平均时间复杂度
      插入排序 O(n2)
      冒泡排序 O(n2)
      选择排序 O(n2)
      快速排序 O(n log n)
      堆排序 O(n log n)
      归并排序 O(n log n)
      基数排序 O(n)
      希尔排序 O(n1.25)

  • 相关阅读:
    算法:字符串处理
    写点什么好呢3?昨日的宝贝成了今日的负担!
    商业研究(22):股权投资,大有可为?
    商业研究(22):股权投资,大有可为?
    .Net Task常见问题
    使用OKHttp模拟登陆知乎,兼谈OKHttp中Cookie的使用!
    Android开发——Android 6.0权限管理机制详解
    创业有套路
    创业有套路
    半分钟内能看透问题本质的人是如何思考的?
  • 原文地址:https://www.cnblogs.com/goed/p/2235213.html
Copyright © 2020-2023  润新知