鱼C论坛

 找回密码
 立即注册
查看: 5822|回复: 22

[新人报道] 时间复杂度or“假溢出”

[复制链接]
回帖奖励 68 鱼币 回复本帖可获得 2 鱼币奖励! 每人限 1 次
发表于 2020-10-28 19:30:55 | 显示全部楼层 |阅读模式
一个程序,重要的是时间复杂度还是什么?
比如说一个队列,如果定义结构体,会出现假溢出的情况(时间复杂度o(1))
但是改进一下,不用考虑“假溢出”了,但时间复杂度会变成O(n)
请问需不需要改进,回答好的另外有奖励
@愷龍 @永恒的蓝色梦想  @乐乐学编程 @昨非

结束时间: 2020-11-27 19:27

正方观点 (0)

优先考虑时间复杂度

反方观点 (5)

优先考虑消除“假溢出”

辩手:0 ( 加入 )
     
    辩手:1 ( 加入 )
    想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
    回复

    使用道具 举报

     楼主| 发表于 2020-10-28 19:38:05 | 显示全部楼层
    想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
    回复

    使用道具 举报

    发表于 2020-10-28 19:40:38 | 显示全部楼层

    回帖奖励 +2 鱼币

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

    使用道具 举报

    发表于 2020-10-28 19:44:13 | 显示全部楼层

    回帖奖励 +2 鱼币

    我觉得看情况吧,根据实际的情况选择是牺牲空间还是牺牲时间,还是得看实际的要求

    评分

    参与人数 1荣誉 +3 鱼币 +5 收起 理由
    巴巴鲁 + 3 + 5 现在感觉很纠结

    查看全部评分

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

    使用道具 举报

    发表于 2020-10-28 20:13:32 | 显示全部楼层

    回帖奖励 +2 鱼币

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

    使用道具 举报

    发表于 2020-10-29 02:35:47 | 显示全部楼层

    回帖奖励 +2 鱼币

    我还没学到 “时间复杂度” 和 “空间复杂度”
    想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
    回复

    使用道具 举报

    发表于 2020-10-29 07:08:21 | 显示全部楼层

    回帖奖励 +2 鱼币

    没有绝对的空间和时间都能兼顾,在平时我们要么会牺牲时间来节约空间,要么一牺牲空间来节约时间,我可以可以通过一些算法来使得时间和空间达到最大的利用,使得相互的牺牲达到一种相对最好的平衡。

    评分

    参与人数 1荣誉 +3 鱼币 +5 收起 理由
    巴巴鲁 + 3 + 5

    查看全部评分

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

    使用道具 举报

    发表于 2020-10-29 08:14:21 | 显示全部楼层

    回帖奖励 +2 鱼币

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

    使用道具 举报

    发表于 2020-10-29 08:43:42 | 显示全部楼层

    回帖奖励 +2 鱼币

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

    使用道具 举报

    发表于 2020-10-29 09:36:37 | 显示全部楼层

    回帖奖励 +2 鱼币

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

    使用道具 举报

    发表于 2020-10-29 10:03:28 | 显示全部楼层

    回帖奖励 +2 鱼币

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

    使用道具 举报

     楼主| 发表于 2020-10-29 11:19:51 | 显示全部楼层
    愷龍 发表于 2020-10-29 07:08
    没有绝对的空间和时间都能兼顾,在平时我们要么会牺牲时间来节约空间,要么一牺牲空间来节约时间,我可以可 ...

    确实,也不知道有没有一种算法兼顾时间和空间
    想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
    回复

    使用道具 举报

     楼主| 发表于 2020-10-29 11:26:16 | 显示全部楼层
    乐乐学编程 发表于 2020-10-29 02:35
    我还没学到 “时间复杂度” 和 “空间复杂度”

    其实就是一个定义
    想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
    回复

    使用道具 举报

    发表于 2020-10-29 12:36:46 | 显示全部楼层

    回帖奖励 +2 鱼币

    进来看看,有没有送渔币
    想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
    回复

    使用道具 举报

    发表于 2020-11-2 12:26:54 | 显示全部楼层

    回帖奖励 +2 鱼币

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

    使用道具 举报

    发表于 2020-11-2 16:22:21 | 显示全部楼层

    回帖奖励 +2 鱼币

    1. 个人理解,应该将 “假溢出” 视为程序的 Bug,因此,有 bug 的程序无论多快都是纸老虎
    2. 运行在一般计算机上的一般程序,随着项目发展,应按照 make it works -> make it right -> make it fast 的顺序设计,编写代码
    3. 在对性能没有极致要求的时候,代码的可阅读性是最重要的,没有之一
    4. 当需要优化性能时,多数情况考虑优化时间复杂度,若算法方面没有质变,则一般采用空间换时间的方案,空间靠花钱
    5. 其他特殊情况特殊处理,比如小霸王游戏机卡

    评分

    参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
    巴巴鲁 + 5 + 5 + 3 鱼C有你更精彩^_^

    查看全部评分

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

    使用道具 举报

     楼主| 发表于 2020-11-2 21:18:28 | 显示全部楼层
    赚小钱 发表于 2020-11-2 16:22
    1. 个人理解,应该将 “假溢出” 视为程序的 Bug,因此,有 bug 的程序无论多快都是纸老虎
    2. 运行在一般 ...

    既然栈和队列是特殊的数组,那我觉得一些简单的应用完全可以用数组来解决,虽然会提升时间复杂度,但是不会出现“假溢出”
    数据结构那本书,我看都是用结构体来做的
    想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
    回复

    使用道具 举报

    发表于 2020-11-3 00:34:43 From FishC Mobile | 显示全部楼层
    本帖最后由 赚小钱 于 2020-11-3 00:38 编辑
    巴巴鲁 发表于 2020-11-2 21:18
    既然栈和队列是特殊的数组,那我觉得一些简单的应用完全可以用数组来解决,虽然会提升时间复杂度,但是不 ...


    首先,我没看过你说的那本书,不清楚你所谓的数据结构是什么意思。

    我推测是定义了某种类似于 struct Queue 的数据类型。如果推测无误,那我是赞同这种定义数据类型的编码方式,且远优于直接使用数组。

    因为,用户,或者说开发者只想要的是一种支持先进先出的线性数据结构,具体到使用上表现为 queue.push queue.pop 两个函数,至于是使用数组,还是链表,还是双向链表,亦或是循环链表什么的,谁又会关心呢?

    而且,还是那句话,你所谓的假溢出完全是一个 bug ,与你直接用数组做队列,还是将数组封装到一个叫做 Queue 的结构体中,完全没有关系。

    然后说一下你的表述问题,无论是栈还是队列都不能被称作特殊的数组。
    一般的数据结构或者算法教材会称作线性表,链表。这两者都是空间维度的概念,即逻辑上相邻的元素的空间关系。而队列与栈是对元素操作的规则定义。以上四个概念有一个共同点,他们都是一维空间。因此,栈与队列的实现方式是基于线性表或者链表。

    接着,我不清楚你为何会说数组会增加时间复杂度。不用数组还能有什么呢,链表吗?双指针它不香吗,再不行加一个实际长度也是好的呀。

    最后,还是看一些正统的教材吧,那种能帮你区分线性表链表与栈队列的教材,如果是英文教材就更好了。
    在学习数据结构与算法设计的同时,最好也学习下程序设计,比如面向对象编程,或者设计模式。然后你就会发现用结构体是理所当然的方法。

    祝,编程快乐,不需要解决太多的 bug。

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

    使用道具 举报

    发表于 2020-11-3 07:04:53 | 显示全部楼层
    好好学习学习
    想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
    回复

    使用道具 举报

    发表于 2020-11-3 19:55:58 | 显示全部楼层

    回帖奖励 +2 鱼币

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-1-11 04:14

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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