范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

图解算法数据结构时间复杂度定义

  算法复杂度旨在计算在输入数据量 N 的情况下,算法的「时间使用」和「空间使用」情况;体现算法运行使用的时间和空间随「数据大小 N 」而增大的速度。算法复杂度主要可从时间 、空间 两个角度评价:
  时间: 假设各操作的运行时间为固定常数,统计算法运行的「计算操作的数量」 ,以代表算法运行所需时间;
  空间: 统计在最差情况下,算法运行所需使用的「最大空间」;
  「输入数据大小 N 」指算法处理的输入数据量;根据不同算法,具有不同的定义,例如:
  时间复杂度指输入数据大小为 N 时,算法运行所需花费的时间。需要注意:
  统计的是算法的「计算操作数量」,而不是「运行的绝对时间」。计算操作数量和运行绝对时间呈正相关关系,并不相等。算法运行时间受到「编程语言 、计算机处理器速度、运行环境」等多种因素影响。例如,同样的算法使用 Python 或 C++ 实现、使用 CPU 或 GPU 、使用本地 IDE 或LeetCode平台提交,运行时间都不同。
  体现的是计算操作随数据大小 N 变化时的变化情况。假设算法运行总共需要「 1 次操作」、「 100 次操作」,此两情况的时间复杂度都为常数级 O(1) ;需要「 N 次操作」、「 100N 次操作」的时间复杂度都为 O(N) 。符号表示
  根据输入数据的特点,时间复杂度具有「最差」、「平均」、「最佳」三种情况,分别使用 O , Θ , Ω 三种符号表示。以下借助一个查找算法的示例题目帮助理解。题目: 输入长度为 N 的整数数组 nums ,判断此数组中是否有数字 7,若有则返回 true ,否则返回 false 。
  解题算法: 线性查找,即遍历整个数组,遇到 7 则返回 true 。
  代码:Pythondef find_seven(nums):     for num in nums:         if num == 7:             return True     return False
  最佳情况Ω(1) : nums = [7, a, b, c, ...] ,即当数组首个数字为 7 时,无论 nums 有多少元素,线性查找的循环次数都为 1 次;
  最差情况 O(N) : nums = [a, b, c, ...] 且 nums 中所有数字都不为 7 ,此时线性查找会遍历整个数组,循环 N 次;
  平均情况 Θ : 需要考虑输入数据的分布情况,计算所有数据情况下的平均时间复杂度;例如本题目,需要考虑数组长度、数组元素的取值范围等;
  大 O 是最常使用的时间复杂度评价渐进符号,下文示例题目解析皆使用 O 。常见种类
  根据从小到大排列,常见的算法时间复杂度主要有:
  O(1) < O(log N) < O(N) < O(Nlog N) < O(N^2) < O(2^N) < O(N!)
  示例解析
  对于以下所有示例,设输入数据大小为 N ,计算操作数量为 count。图中每个「蓝色方块」代表一个单元计算操作。
  常数 O(1) :运行次数与 N 大小呈常数关系,即不随输入数据大小 N 的变化而变化。def algorithm(N):     a = 1     b = 2     x = a * b + N     return 1
  对于以下代码,无论  a  取多大,都与输入数据大小 N   无关,因此时间复杂度仍为 O(1) 。 def algorithm(N):     count = 0     a = 10000     for i in range(a):         count += 1     return count
  线性O(N):循环运行次数与 N   大小呈线性关系,时间复杂度为 O(N)。 def algorithm(N):     count = 0     for i in range(N):         count += 1     return count
  对于以下代码,虽然是两层循环,但第二层与 N大小无关,因此整体仍与 N 呈线性关系。# Python def algorithm(N):     count = 0     a = 10000     for i in range(N):         for j in range(a):             count += 1     return count
  平方 O(N^2):两层循环相互独立,都与 N 呈现线性关系,因此总体与 N 呈平方关系,时间复杂度为 O(N^2)def algorithm(N):     count = 0     for i in range(N):         for j in range(N):             count += 1     return count
  以「冒泡排序」为例,其包含两层独立循环:
  第一层复杂度为 O(N);
  第二层平均循环次数为N/2,复杂度为 O(N) ,推导过程如下:
  因此,冒泡排序的总体时间复杂度为 O(N^2) ,代码如下所示。 def bubble_sort(nums):     N = len(nums)     for i in range(N - 1):         for j in range(N - 1 - i):             if nums[j] > nums[j + 1]:                 nums[j], nums[j + 1] = nums[j + 1], nums[j]     return nums
  指数 O(2^N) :生物学科中的 "细胞分裂" 即是指数级增长。初始状态为 1个细胞,分裂一轮后为 2 个,分裂两轮后为 4 个,……,分裂 N 轮后有 2^N 个细胞。
  算法中,指数阶常出现于递归,算法原理图与代码如下所示。def algorithm(N):     if N <= 0: return 1     count_1 = algorithm(N - 1)     count_2 = algorithm(N - 1)     return count_1 + count_2
  指数 O(2^N)
  阶乘 O(N!):阶乘阶对应数学上常见的 "全排列" 。即给定 NN 个互不重复的元素,求其所有可能的排列方案,则方案数量为:
  N (N 1) (N 2) 2 1=N!
  如下图与代码所示,阶乘常使用递归实现,算法原理:第一层分裂出 N 个,第二层分裂出 N - 1个,…… ,直至到第 N 层时终止并回溯。def algorithm(N):     if N <= 0: return 1     count = 0     for _ in range(N):         count += algorithm(N - 1)     return count
  对数 O(log N):对数阶与指数阶相反,指数阶为 "每轮分裂出两倍的情况" ,而对数阶是 "每轮排除一半的情况" 。对数阶常出现于「二分法」、「分治」等算法中,体现着 "一分为二" 或 "一分为多" 的算法思想。
  设循环次数为 m,则输入数据大小 N 与 2 ^ m 呈线性关系,两边同时取 log2对数,则得到循环次数 m 与 log2N 呈线性关系,即时间复杂度为 O(logN) 。def algorithm(N):     count = 0     i = N     while i > 1:         i = i / 2         count += 1     return count
  如以下代码所示,对于不同 aa 的取值,循环次数 mm 与 loga N 呈线性关系 ,时间复杂度为O(loga N) 。而无论底数 a 取值,时间复杂度都可记作O(logN) ,根据对数换底公式的推导如下:
  def algorithm(N):     count = 0     i = N     a = 3     while i > 1:         i = i / a         count += 1     return count
  如下图所示,为二分查找的时间复杂度示意图,每次二分将搜索区间缩小一半。
  线性对数 O(Nlog N):两层循环相互独立,第一层和第二层时间复杂度分别为 O(logN) 和 O(N) ,则总体时间复杂度为O(NlogN) ;def algorithm(N):     count = 0     i = N     while i > 1:         i = i / 2         for j in range(N):             count += 1
  线性对数阶常出现于排序算法,例如「快速排序」、「归并排序」、「堆排序」等,其时间复杂度原理如下图所示。
  线性对数 O(Nlog N)

国家网信办依法约谈处罚豆瓣网36氪获悉,据网信办消息,12月1日,国家互联网信息办公室负责人约谈豆瓣网主要负责人总编辑,针对近期豆瓣网及其账号屡次出现法律法规禁止发布或者传输的信息,情节严重,依据中华人民共和DIY间谍智能小车之十智能小车串口指令格式与分析指令格式7ENNCCD1D2Dn,(NNn1,n0,12,CC0,255)其中CC及指令代号,最多256条指令串口指令分析程序如下u8COM1ZT0串口1终结快递神话每天有多少快递??真的是数不胜数,快递只有那几大公司,数年来,只有小兔入围,坚持多久,不得而知。这种情况会一直持续下去吗?当然不会,新的模式出现,就是快递逐渐没落的时候。下面说正题共享经济下新型劳动关系初探近年来,随着信息基础设施的日益完善和互联网信息技术的日渐成熟,共享经济在互联网模式的助力下蓬勃发展起来,随之也衍生出了平台个人的新型用工形式。其背后的理念为人们需要的是产品的使用价国内新物流集团成立,是否会影响当前的快递架构据报道,经国务院批准,我国以综合物流作为主业的新央企中国物流集团有限公司正式揭牌成立。这个新集团股权结构为国务院国资委和中国诚通控股集团有限公司持股比例相同,为38。93家战略投资3D打印又有零的突破!我国增材制造首项国标发布说起增材制造,恐怕大多数人都不熟悉。其实,增材制造又被称为3D打印,我国天问一号火星探测器就曾应用了这一技术。日前,由中机生产力促进中心牵头制定的ISOIEC235102021信息当纯电动车达到1000km续航时,才是电动时代的真正开启虽然电池技术目前还没看到质的飞跃,但纯电动车的续航里程正在不断飙涨。从最初的200300km左右续航,到后来的400km500km600km,纯电动车续航里程的天花板在不断被刷新。内存映射小块内存申请brk和申请大块内存的Mmap分析一。前言本文为内存部分最后一篇,介绍内存映射。内存映射不仅是物理内存和虚拟内存间的映射,也包括将文件中的内容映射到虚拟内存空间。这个时候,访问内存空间就能够访问到文件里面的数据。而你使用时间最长的手机是哪款?感谢您的阅读!哪款手机你使用的时间是最长的?我自己使用最长的一款手机是iPhone6。这款手机我购买到现在使用,大概使用了几年的时间,手机依然可以开机,虽然会有一些卡顿,但是依然能司马南与张捷老师质疑联想集团,会被法律制裁吗?如果司马南与张捷信口开河抹黑联想集团,当然要受到法律制裁。但问题是两个人质疑联想集团是基于亊实有理有据,而被质疑者要么长时间不回应,要么派出女公关企图以金钱收买,在收买不成的情况下亚马逊跨境电商到底是什么?1亚马逊平台是什么。亚马逊是全球最大的一个电商平台,主要面对全球的市场,也就是国外的市场(是向欧洲各国北美日本中东澳大利亚新加坡南美等这些发达国家发达地区,覆盖人口30亿人的市场。
不需要路由器交换机和移动硬盘,这样传数据还能享受千兆速度有时候我们需要备份或传输的数据很大,有几百G或1T以上,没有大容量移动硬盘,或者有也是普通接口的硬盘,如果快速高效传输备份数据到其他电脑上?网线直连。对。我们说一下如何两台电脑做网华尔街顶级交易员导师如何选择处理交易图表信息的方法布雷特斯坦伯格(BrettSteenbarger)是美国知名交易心理导师,曾在华尔街多家顶级培训机构担任交易员心理导师。作为一名心理学教授和资深交易员,布雷特对交易心理的理解远胜他如何交易回撤?你必须知晓的趋势延续模式文Moritz职业扑克玩家日内交易员回撤不当当是回调,它们有不同的类型,比如被市场归类为通道扩展(channelsexpanding),压缩(condensing),对称(symm一文了解中美信息技术领域世界500强企业对比世界500强,是中国人对美国财富杂志每年评选的全球最大五百家公司排行榜的一种约定俗成的叫法。进入世界500强,标志着企业进入了全球特大型企业俱乐部,更好地在全球范围内参与市场的竞争2021年应该选择什么样的在线经纪商?必看的5个贴士不同于证券期货的场内交易市场,差价合约及零售外汇市场是一个OTC(OverTheCounter场外交易)市场,也就是没有一个集中的交易所,交易者必须要选择一家在线经纪商来帮助他们进来看看外汇交易商的六种死法早些年国内外汇市场蓬勃发展,也引发了一轮本土经纪商的迅速崛起。KVB昆仑国际(现更名为中信里昂证券)富途证券以及两年前宣布关门的Formax等本土券商陆续在新西兰香港英国等地获得监末日博士鲁比尼警告股市或重演2008年大熊市全球经济复苏步伐蹒跚,贫富悬殊问题越来越严重,但美股却处历史高位,有末日博士之称的知名经济学家鲁比尼(NourielRoubini)警告,美国金融市场及经济皆存在泡沫,有关牛市显然由一家交易服务商的发展和演变,纵观外汇交易行业的发展历程现在,想要成为一名交易员比30年前容易得多。只需拥有网络并选择一家经纪商开户,投资者便可获得免费交易并开始交易。那么,全球现在有多少交易员呢?据统计,仅美国就有1390万线上交易员关于完美交易策略的真相它存在吗?没有完美的交易策略。一遍又一遍地对自己重复这句话,直到它深深地印在你的脑海里。无论大师或教育计划提供或承诺什么,永远不要忘记这个真理没有完美的交易策略。完美的交易策略并不存在,因为中国女性存款多于男性,投资赚钱比例更高据南洋商报援引美国富达国际(FidelityInternational)发布的首份全球女性投资理财调研报告显示,在调研覆盖的所有市场中,中国是唯一一个女性比男性拥有更多存款的地区,ATFX是如何从百花齐放的金融行业中脱颖而出?原有何在ATFX自英国出发,是一家全球领先的差价合约经纪商,同时也是业界最专注于产品和交易体验的顶级交易平台,并用金融科技重新定义了交易环境。ATFX清楚在金融市场里面,最佳的交易体验极其