当前位置: 首页 > news >正文

算法简介:查找与算法运行时间

文章目录

  • 1. 二分查找与简单查找
    • 1.1 运行时间
  • 2. 旅行商问题

算法是一组完成任务的指令。任何代码片段都可以视为算法。

1. 二分查找与简单查找

二分查找是一种算法,其输入是一个有序的元素列表,如果要查找的元素包含在列表中,二分查找返回其位置;否则返回NULL。二分查找每次都检查中间的元素。

def binary_search(list, item):
low = 0
high = len(list) - 1
while low <= highmid = (low + high)/2guess = list[mid]if guess == item:return midif guess > item:high = mid - 1else:low = mid + 1
return None 

简单查找即将元素全部遍历。

1.1 运行时间

大O表示法:一种特殊的表示法,指出算法的速度有多块。
大O表示法指的并非以秒为单位的速度。大O表示法让你能够比较操作数,它指出了算法运行时间的增速。

假设有10亿个元素有序排列,需要查找其中的一个元素,没查找一个元素需要消耗1毫秒,则简单查找需要11天左右,二分查找需要30ms。

假设列表有n个元素。

  • 简单查找需要查找每个元素,因此需要执行n次操作,使用大O表示法,这个运行时间为O(n)。
  • 二分查找需要执行log n次操作,使用大O表示为O(log n)。

大O表示法指出了最糟情况下的运行时间。

一些常见的大O运行时间:
O(log n),对数时间,如二分查找
O(n),线性时间,如简单查找
O(n*log n),如快速排序
O(n^2),如选择排序
O(n!),如旅行商问题

  • 算法的速度指的并非时间,而是操作数的增速。、
  • 谈论算法的速度时,我们说的是随着输入的增加,其运行时间将以什么样的速度增加。
  • 算法的运行时间用大O表示法表示。
  • O(log n)比O(n)快,当需要搜索的元素越多时,前者比后者快的越多。

2. 旅行商问题

有一位旅行商。他需要前往5个城市,同时需要确保旅途最短。为此,可考虑前往各个城市的各种可能顺序。
对于每种顺序,他都计算总旅程,再挑选出旅程最短的路径。

  • 5个城市有120钟不同的排列方式。
  • 涉及6个城市时,需要执行720次操作。
  • 涉及7个城市时,需要执行5040次操作。
  • 涉及n个城市时,需要执行n!(n的阶乘)次操作。因此运行时间为O(n!),即阶乘时间。
http://www.lryc.cn/news/306757.html

相关文章:

  • 零基础C++开发上位机--基于QT5.15的串口助手(三)
  • Facebook的虚拟社交愿景:元宇宙时代的新起点
  • 【深度学习笔记】4_6 模型的GPU计算
  • 留学申请过程中如何合理使用AI?大学招生官怎么看?
  • vue2与vue3的diff算法有什么区别
  • ES小总结
  • vue2与vue3中父子组件传参的区别
  • 使用vuetify实现全局v-alert消息通知
  • CentOS 7.9上编译wireshark 3.6
  • 初学学习408之数据结构--数据结构基本概念
  • Java项目中必须使用本地缓存的几种情况
  • 【鸿蒙 HarmonyOS 4.0】TypeScript开发语言
  • Android java基础_异常
  • 高数考研 -- 公式总结(更新中)
  • 详解顺序结构滑动窗口处理算法
  • Java 8中使用Stream来操作集合
  • MATLAB环境下一种改进的瞬时频率(IF)估计方法
  • 解决:selenium web browser 的版本适配问题
  • pytest.param作为pytest.mark.parametrize的参数进行调用
  • 如何判断一个元素是否在可视区域中?
  • Go Run - Go 语言中的简洁指令
  • Spring全面精简总结
  • 低代码开发如何助力数字化企业管理系统平台构建
  • ElasticSearch之零碎知识点
  • 【春运抢票攻略浅析】
  • 【Java EE初阶二十五】简单的表白墙(一)
  • 人工智能的新浪潮:探索OpenAI的Sora视频模型及其对未来创作的影响
  • 【c语言】字符函数和字符串函数(上)
  • React18源码: schedule任务调度messageChannel
  • Jmeter 学习目录