鱼C论坛

 找回密码
 立即注册
查看: 1786|回复: 8

[见证历程] [Python算法学习Day2] 1.3大O表示法

[复制链接]
发表于 2022-10-1 14:19:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.3.1 算法的运行时间一不同的速度增加
    大O表示法指出了算法有多快。例如,假设列表包含n 个元素。简单查找需要检查每个元素,因此需要执行n 次操作。
    大O表示法让你能够比较操作数,它指出了算法运行时间的增速
    大o表达法: O(n)  括号里面的n是代表操作数


1.3.2 理解不同的大O运行时间
    举例:
        如果要在一张纸上画16个格子有两种算法
            第一种: 拿笔画16个,每次画格子算作一个操作数,用大O表示法也就是O(16)
            第二种: 将纸对折四次,每次对折算一做一个操作数,用大O表示法也就是O(4),显而易见第二种算法更快


1.3.3大O表示法指出了最糟糕情况下的运行时间
    举例:
        如果你在电话簿中寻找Adit这个人,如果一次找到运行时间其实还是O(n),因为大O表示法说的是最糟糕的情况

1.3.4一些常见的大O运行时间
    O (log n )也叫对数时间 ,这样的算法包括二分查找。
    O (n )也叫线性时间 ,这样的算法包括简单查找。
    O (n * log n )这样的算法包括第4章将介绍的快速排序——一种速度较快的排序算法。
    O (n^2)这样的算法包括第2章将介绍的选择排序——一种速度较慢的排序算法。
    O (n !)这样的算法包括接下来将介绍的旅行商问题的解决方案
    ——一种非常慢的算法。

练习:

1.3 在电话簿中根据名字查找电话号码
    O(log n)

1.4 在电话簿中根据电话号码找人(提示:你必须查找整个电话簿)
    O(n)

1.5 阅读电话簿中每个人的电话号码
    O(n)

1.6阅读电话簿中姓名以A打头的人的电话号码。这个问题比较棘手, 它涉及第4章的概 念。答案可能让你感到惊讶!
    O(n)


1.3.5 旅商问题
是组合优化中的一个NP困难问题,在运筹学和理论计算机科学中非常重要。
问题内容为“给定一系列城市和每对城市之间的距离,求解访问每一座城市一次并回到起始城市的最短回路



1.4总结:
    1.二分查找的速度比简单查找要快很多
    2.O(log n) 比 O(n)快 需要搜索的元素越多,前者比后者月快的越多
    3. 算法运行时间并不以秒为单位(用毫秒)
    4.算法运行时间是从增速的角度度量的
    5.算法运行时间用大O表示法表示


每日一题Leetcode: 35 Search Insert Position
def search_insert(nums,target):
    low = 0
    high = len(nums) -1 
    
    if target > nums[high]:
        return len(nums)
    
    for i in range(len(nums)):
        if nums[i] >= target:
            return i

lis = [1,6,8,9,10]
print(search_insert(lis,11))

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-1 16:09:33 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-1 19:03:42 | 显示全部楼层

回帖奖励 +5 鱼币

时间复杂度?

那么1.3.2案例两个都是 O(1)

常数去除,如果只有常数,都当作1,也就是说,如果你的循环次数到达了114514次,他的时间复杂度也是O(1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-2 00:15:49 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-2 03:05:46 | 显示全部楼层
嘉岳呀 发表于 2022-10-1 19:03
时间复杂度?

那么1.3.2案例两个都是 O(1)

应该还没研究到时间复杂度哈哈哈哈,第一听刚开始学算法。看书上就是写了按照一个操作数算一次的话这两个例子分别是O(16)跟O(4)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-2 08:33:54 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-2 08:52:00 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-2 09:51:03 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-13 11:03:16 | 显示全部楼层
路过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-4 01:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表