查看: 257|回复: 4

我该怎么用肉眼判断算法的时间复杂度?

[复制链接]

0

技术

7

魅力

1

原创

网站编辑

我最可铐

Rank: 8Rank: 8

积分
6867
人气
217
分享
594

最佳新人活跃会员

发表于 2023-2-1 12:14:54 | 显示全部楼层 |阅读模式
[Python] 纯文本查看 复制代码

word=str.lower(input('Input a string to check if there\'s a/some repeated character(s).'))
REPEATED_CHARACTER=False

for n in range(len(word)):
    if (word[n] in word[0:n]) or (word[n] in word[n+1:]):
        print('有重复')
        REPEATED_CHARACTER=True
        break
    else:
        pass

if not REPEATED_CHARACTER:
    print('无重复')



比如说这个例子,判断字符串内是否有重复字符,我实现的这个一看就很复杂,
但是它的时间复杂度具体是多少?O(n)甚至是O(n^2)?


1

技术

25

魅力

7

原创

管理员

Rank: 9Rank: 9Rank: 9

积分
11343
人气
297
分享
42

论坛元老优秀版主活跃会员最佳新人灌水之王

发表于 2023-2-1 21:07:07 | 显示全部楼层
应该是O(n^2)吧,在字符串里找字符的时间复杂度是O(n)

评分

参与人数 1人气 +3 收起 理由
explore + 3 很给力!

查看全部评分

Just do it.

4

技术

17

魅力

6

原创

版主

禁止发言

Rank: 7Rank: 7Rank: 7

积分
5367
人气
208
分享
36

最佳新人活跃会员

发表于 2023-2-1 14:26:31 | 显示全部楼层
@skystars @Andysun06

评分

参与人数 1人气 +3 收起 理由
explore + 3 很给力!

查看全部评分

YF工作室驻x64论坛分部
工作室曾开发的软件:YFSafe安全软件,YFChat在线聊天软件,MBRTools等。
欢迎有能力的你加入我们一起共同进步。请发邮件至yfstudio2021@outlook.com

0

技术

7

魅力

1

原创

网站编辑

我最可铐

Rank: 8Rank: 8

积分
6867
人气
217
分享
594

最佳新人活跃会员

 楼主| 发表于 2023-2-3 16:45:01 | 显示全部楼层
skystars 发表于 2023-2-1 21:07
应该是O(n^2)吧,在字符串里找字符的时间复杂度是O(n)

Thx,
经你这么一说,我好像大概懂时间复杂度是这么算出来的了

0

技术

1

魅力

1

原创

版主

Rank: 7Rank: 7Rank: 7

积分
36288
人气
117
分享
3016

最佳新人活跃会员

发表于 2023-2-4 19:31:38 | 显示全部楼层
主要是看程序中最多嵌套了多少次循环,比如冒泡排序,头尾虽然有for,但时间复杂度都是一次,相比于处理部分的二次几乎可以忽略,所以冒泡的复杂度为n方(个人理解)

评分

参与人数 1人气 +3 收起 理由
explore + 3 赞一个!

查看全部评分

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

本版积分规则

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