1. 时间复杂度(大O表示法)以及使用python实现栈
1.时间复杂度(大O表示法):
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n) < O(n!) < O(nn)
(1)Python中常用数据结构的时间复杂度:
list内置操作的时间复杂度:
dict内置操作的时间复杂度:
(2)抽象数据类型(ADT: Abstract Data Type):
常用数据运算(5种):
增(插入)
删(删除)
改(修改)
查(查找)
排序
2. 栈的实现:
(1)栈的表现形式:
(2)栈的操作:
Stack(): 创建一个新的空栈
push(item):添加一个新元素item到栈顶
pop(): 弹出栈顶元素
peek(): 返回栈顶元素
is_empty(): 判断栈是否为空
size(): 返回栈的元素个数
(3)实现栈:
class Stack(object):
"""栈的实现"""
def __init__(self):
self.__list = [] # 添加一个新元素item到栈顶
def push(self, item):
self.__list.append(item) # 弹出栈顶元素
def pop(self):
return self.__list.pop() # 返回栈顶元素
def peek(self):
if self.__list:
return self.__list[-1]
else:
return None # 判断栈是否为空
def is_empty(self):
return self.__list == [] # 返回栈的元素个数
def size(self):
return len(self.__list) if __name__ == "__main__":
s = Stack()
s.push(1)
s.push(2)
s.push(3)
s.push(4) print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop())
运行结果:
1. 时间复杂度(大O表示法)以及使用python实现栈的更多相关文章
- 习题一初步理解时间复杂度大O表示法案例
1.如果 a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),如何求出所有a.b.c可能的组合? 如上:a+b+c=1000, a平方+b平方=c平方 求出所有abc可能的组合 ...
- 算法的时间复杂度——"大O分析法"(转载)
原文地址:https://my.oschina.net/gooke/blog/684026 一下为本人笔记:) 场景:在解决计算机科学领域的问题时,经常有好多个方法都可以,想找到最优的方法,就有了时间 ...
- 算法的时间复杂度(大O表示法)
定义:如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T(n),它是n的某一函数 T(n)称为这一算法的“时间复杂性”. 当输入量n逐渐加大时,时间复杂性的极限情形称为算法的“渐近时间复杂性 ...
- python数据结构与算法学习自修第二天【时间复杂度与大O表示法】
#!/usr/bin/env python #! _*_ coding:UTF-8 _*_ from Queue import Queue import time que = Queue() time ...
- 时间复杂度和大O表示法
大O表示法:称一个函数g(n)是O(f(n)),当且仅当存在常数c>0和n0>=1,对一切n>n0均有|g(n)|<=c|f(n)|成立,也称函数g(n)以f(n)为界或者称g ...
- 算法时间复杂度、空间复杂度(大O表示法)
什么是算法? 计算机是人的大脑的延伸,它的存在主要是为了帮助我们解决问题. 而算法在计算机领域中就是为了解决问题而指定的一系列简单的指令集合.不同的算法需要不同的资源,例如:执行时间或消耗内存. 如果 ...
- 白话算法:时间复杂度和大O表示法
转自:https://www.jianshu.com/p/59d09b9cee58 每一个优秀的开发者脑中都有时间概念.他们想给用户更多的时间让用户做他们想做的事情.他们通过最小化时间复杂度来实现这一 ...
- 大O表示法
概念 大O表示法是和数据项的个数相关联的粗略度量算法时间复杂度的快捷方法. 常数一个无序可重复数组插入一个数据项的时间T是常数K,常数K表示一次插入所花费的时间,包含cpu.编译器等工作时间.可表示为 ...
- 重拾算法之复杂度分析(大O表示法)
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
随机推荐
- 一.volatile关键字
一.volatile关键字的原理 使用volatile关键字增加了实例变量在多个线程之间的可见性.但volatile的最致命的缺点是不支持原子性. synchronized代码块具有volatile同 ...
- 【转】3D图形引擎(DX9): FX
做图形程序已经很多年了,积累了一些经验.来这个论坛也有好几年了,遇到问题的时候,也会在这里发帖子问,也很感谢大家的回答与帮助,希望能多认识一些朋友,大家多交流.分享.做这款项目也有蛮多年了,终于上线了 ...
- 病症:arm启动后应用程序界面显示…
病症:病症:arm启动后应用程序界面显示不正常(左面有部分未能正常显示)也就是左面少一块区域,右面多一部, 原因:lcd显示驱动中场扫描的问题 平台:s3c2416.linux2.6.800*480l ...
- Linux下查看进程的命令输出的内容解释
Linux下查看进程的命令输出的内容解释 ps (process status) ps -e 或者ps -A (-e和-A完全一样) PID TTY TIME ...
- Spring Data系列之Jpa(一)
1.Spring Data的由来 Spring Data是SpringSource基金会创下的一个简化数据库访问.支持云服务的开源框架.其主要目的是让数据库访问变的方便快捷,可以用Spring Dat ...
- A Look at the Razor View Engine in ASP.NET MVC
The biggest architectural difference that exists between ASP.NET MVC and ASP.NET Web Forms is the ne ...
- iis8不支持 aspnet_regiis.exe -iru 命令的解决办法
服务器版的限制,我看你给的提示说也可以使用 dism.exe 命令行. C:\> DISM /Online /Enable-Feature /FeatureName:WCF-HTTP-Activ ...
- commons-X系列
1 commons-lang 1.1 ReflectionToStringBuilder 将对象进行字符串拼接 /* * Licensed to the Apache Software Foundat ...
- 2014年:Linux和开源的福祸之年
(1)Heartbleed漏洞 Heartbleed漏洞,是今年开源软件曝出的最大糗事.Heartbleed漏洞是OpenSSL的重大漏洞,这项严重缺陷(CVE-2014-0160)的产生是由于未能在 ...
- jQuery--基础知识速查表
一.jQuery选择器 选择器 实例 选取 * $("*") 所有元素 #id $("#lastname") id="lastname" 的 ...