zoukankan      html  css  js  c++  java
  • 2、大O表示法

    一、大O表示法

          大O表示法不是一种算法。它是用来表示一个算法解决问题的速度的快慢。一般我们描述一件事情完成的快慢是用时间描述的,比如说我完成一道计算题用了多少分钟。但算法的运算是很难用准确的时间来描述的,所以我们就用算法解决问题一共用了多少步来表示算法的快慢。

          用第一篇的两种查找方法来举例,简单查找我们要用列表中的每一个元素逐一去比较,如果有n个元素,那么简单查找最多需要n步找到数据(数据在列表末尾)。而二分查找一次只用中位数去作比较,当查找有n个元素的数组时,最多需要log2n次。

          用大O表示法表示两种算法的速度分别是:O(n),O(log2n).

          注意:1.大O表示法反映的是算法解决问题的最糟糕的情况;2.大O表示法表示的是:随着数据增多,算法解决问题的操作数的变化。

    其它常见的大O表示法:

    O(n) —— 简单查找

    O(log2n) —— 二分查找

    O(n!) —— 旅行商问题

    二、旅行商问题

         如果有一个旅行商想要途径5个城市,他要计划一条这5个城市连接的最短线路,那么他就要计算(5×4×3×2×1=)120次才能找出最短的那条路线。同理,如果要途径n个城市,就要经过n!次计算才能找出最短线路。这个就是旅行商问题。

  • 相关阅读:
    OSPF Configuration Examples
    enabling ip forwarding
    LeetCode 153. Find Minimum in Rotated Sorted Array
    洛谷 P1059 明明的随机数
    LeetCode 120. Triangle
    洛谷 P1047 校门外的树(待完善)
    C++万能头文件<bits/stdc++.h>的内容与优缺点
    LeetCode 217. Contains Duplicate
    LeetCode 414. Third Maximum Number
    洛谷 P1540 机器翻译
  • 原文地址:https://www.cnblogs.com/lqxing1994/p/9208555.html
Copyright © 2011-2022 走看看