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)实现栈:    

 1 class Stack(object):
 2     """栈的实现"""
 3     def __init__(self):
 4         self.__list = []
 5
 6     # 添加一个新元素item到栈顶
 7     def push(self, item):
 8         self.__list.append(item)
 9
10     # 弹出栈顶元素
11     def pop(self):
12         return self.__list.pop()
13
14     # 返回栈顶元素
15     def peek(self):
16         if self.__list:
17             return self.__list[-1]
18         else:
19             return None
20
21     # 判断栈是否为空
22     def is_empty(self):
23         return self.__list == []
24
25     # 返回栈的元素个数
26     def size(self):
27         return len(self.__list)
28
29
30 if __name__ == "__main__":
31     s = Stack()
32     s.push(1)
33     s.push(2)
34     s.push(3)
35     s.push(4)
36
37     print(s.pop())
38     print(s.pop())
39     print(s.pop())
40     print(s.pop())

      运行结果:

      

原文地址:https://www.cnblogs.com/si-lei/p/9260476.html

时间: 2024-11-15 12:43:32

1. 时间复杂度(大O表示法)以及使用python实现栈的相关文章

大O表示法的理解

一. 背景 在现实生活中,解决一个问题可以有多种方法,其中有好的方法,也有较为一般的方法.评判标准虽有不同,但总体思想是:用最小的代价获得最多的收益. 这里所说代价并不仅指金钱开销,有时也包括时间,所耗费资源等. 计算机程序也是为了解决问题而编写的.同理可知,程序有好的,也有一般的,评判标准主要有两方面:时间与空间. 人们都希望事情解决的越快越好,所以程序解决问题花费的时间一定要少.计算机资源是有限的,所以程序也要尽可能的少消耗资源. 不过很多时候不能两全其美,此时应该抓主要矛盾.在编程时,很多

【从0到1学算法】大O表示法

一般我们在选择算法时,都是想要选择效率最高的算法.那算法的效率,用什么表示?没错!就是用大O表示法. PS: 大O表示法中,log即为log2,后面不再说明. 下面以简单查找和二分查找,在含有n个元素的有序列表中查找其中一个元素为例,下表总结了我们发现的情况. 使用简单查找时,最多需要猜测次数与列表长度相同,这被称为线性时间,大O表示法为O(n). 二分查找则不同,最多需要猜测次数为logn(n为列表长度),这被称为对数时间(log时间),大O表示法为O(logn). 基本概念 大O表示法指出了

大O表示法(向往罗马)

一.身在斯洛文尼亚的阿拉里克得到斯提里科被杀的消息后,仰天大笑:"终于没有人能阻止我去罗马了."当他手下的将军问:"不知大王打算走哪条路去罗马?"西哥特王哈哈大笑,说出了那句千古名言:All roads lead to Rome 二.最近看了Mark Allen Weiss的<数据结构与算法分析---java语言描述>,看到第二章的算法分析,看到里面对算法时间预估方式用到的相对增长率(relative rate of growth).同时为了准确计算不同

2、数据结构与算法之大O表示法

一.大O表示法 大O表示法不是一种算法.它是用来表示一个算法解决问题的速度的快慢.一般我们描述一件事情完成的快慢是用时间描述的,比如说我完成一道计算题用了多少分钟.但算法的运算是很难用准确的时间来描述的,所以我们就用算法解决问题一共用了多少步来表示算法的快慢. 用第一篇的两种查找方法来举例,简单查找我们要用列表中的每一个元素逐一去比较,如果有n个元素,那么简单查找最多需要n步找到数据(数据在列表末尾).而二分查找一次只用中位数去作比较,当查找有n个元素的数组时,最多需要log2n次. 用大O表示

大O表示法(Big O nonation)

大O表示法是用来表示一个算法在最糟糕情况下的运行时间.需要注意的是算法运行时间并不以秒为单位并且是从其增速的角度度量的. 下面是5个常见的大O运行时间 ? O(log n), also known as log time. Example: Binary search. ? O(n), also known as linear time. Example: Simple search. ? O(n * log n). Example: A fast sorting algorithm, like

算法图解之大O表示法

什么是大O表示法 大O表示法可以告诉我们算法的快慢. 大O比较的是操作数,它指出了算法运行时间的增速. O(n) 括号里的是操作数. 举例 画一个16个格子的网格,下面分别列举几种不同的画法,并用大O表示法表示 1.  一次画一个格子.O(n) 2. 折叠纸张,折叠四次就能出现16个格子.O(log n) 大O表示法所表示的是一个算法在最糟糕情况下的运行时间. 一些常见的大O运行时间 O(log n),也叫对数时间,二分查找. O(n),也叫线性时间,简单查找. O(n * log n),快速排

大O表示法

一.大O表示法定义 大O表示法是一种特殊的表示法,指出了算法的速度有多快.当然是趋向于操作的次数,因为每种操作的方式不同所需的时间也就无法统一.大O表示法通常作为一个算法优劣的标准,越快越好,数值越小越快. 二.大O表示法语法 O(n) 例: 假设列表有n个元素,简单查找需要查找每个元素,因此需要执行n次操作.使用大O表示法记做:O(n) 如果用二分法查找,则需要执行 log 2n 次操作.使用大O表示法记做:O(log 2n) 三.理解大O表示法 大O表示法记录的是最糟糕情况下的运行次数. 从

主成分分析法原理及其python实现

主成分分析法原理及其python实现 前言: 这片文章主要参考了Andrew Ng的Machine Learning课程讲义,我进行了翻译,并配上了一个python演示demo加深理解. 本文主要介绍一种降维算法,主成分分析法,Principal Components Analysis,简称PCA,这种方法的目标是找到一个数据近似集中的子空间,至于如何找到这个子空间,下文会给出详细的介绍,PCA比其他降维算法更加直接,只需要进行一次特征向量的计算即可.(在Matlab,python,R中这个可以

下载大数据实战课程第一季Python基础和网络爬虫数据分析

python语言近年来越来越被程序相关人员喜欢和使用,因为其不仅简单容易学习和掌握,而且还有丰富的第三方程序库和相应完善的管理工具:从命令行脚本程序到gui程序,从B/S到C/S,从图形技术到科学计算,软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有python的身影:python已经深入到程序开发的各个领域,并且会越来越多的人学习和使用. 大数据实战课程第一季Python基础和网络爬虫数据分析,刚刚入手,转一注册文件,视频的确不错,可以先下载看看:链接:http://pan.baidu