Python
酸辣土豆
这个作者很懒,什么都没留下…
展开
-
Python搜索算法之 折半查找
目的:查找某个数是否存在二分查找(折半查找):缺点:要求待查表为有序表(有序的顺序表,不适用于链表),且插入删除困难。分为递归版本和非递归版本。#coding: UTF-8def BinarySearch(list, item): '''二分查找''' n = len(list) if n > 0: mid = n // 2 ...原创 2020-03-07 16:02:29 · 492 阅读 · 0 评论 -
Python排序算法
冒泡排序:稳定排序,最优时间复杂度O(n),最坏O(n2)要点:双重循环, 大的数往后挪。def bubble(list): for j in range(0, len(list)): for i in range(len(li) -1 - j): if list[i] > list[i+1]: list...原创 2020-03-07 10:26:42 · 229 阅读 · 0 评论 -
Python数据结构与算法之 队列与双端队列的实现
和栈一样, 队列可以用顺序表和链表实现。添加数据用的多,取数据用得少, 使用self.__list.append(item)# -*- coding: UTF-8 -*-class Quene(object): #构造函数 # 顺序表实现队列 def __init__(self): self.__list = [] def enqueue(s...原创 2020-03-02 17:18:00 · 182 阅读 · 0 评论 -
Python数据结构与算法之 栈结构的实现
压栈(入栈):push(item) 添加一个新的元素item到栈顶。弹出(出栈):pop() 弹出栈顶元素。peek() 返回栈顶元素。is_empty() 判断栈是否为空size() 返回栈的元素个数。# -*- coding: UTF-8 -*-class Stack(object): '''栈''' def __init__(self): self...原创 2020-03-02 16:58:36 · 135 阅读 · 0 评论 -
Python数据结构与算法之 栈与队列的基本概念
从下往上添加,符合这种特点的叫栈(stack)。后进先出,本质上是一种容器。可以采取顺序表实现,按照顺序存储。也可以用链表实现栈。区别:栈描述的是操作,顺序表描述的是存储。队列:队列(queue):从一端添加,从另一端取。first in first out: 先进先出。...原创 2020-03-02 16:34:06 · 140 阅读 · 0 评论 -
Python算法与数据结构之 顺序表添加与删除元素
添加:时间复杂度分别为:O(1), O(1), O(n)删除:O(1), O(1), O(n)list采取的是元素外置存储,所以只需存储地址。原创 2020-03-02 16:19:13 · 538 阅读 · 0 评论 -
Python数据结构与算法之 顺序表的结构与实现
顺序表存储四个整形。以32位操作系统为例,按字节寻址,需要16个字节。4Byte = 32位0x232000x273900x31780x3512112基本的顺序存储表:Li[0] --> 0x23 --> 200Li[3] --> 0x23 + 3*4Byte --> 12112为什么list要从0开始? 序号相当...原创 2020-03-02 15:45:02 · 223 阅读 · 0 评论 -
Python数据结构与算法之 数据结构引入
数据结构:一组数据如何保存及组织结构抽象数据类型:#定义数据及相应的操作:抽象数据类型(ADT)class Stus(object): def adds(self): def pop: def sqrt: def modify:...原创 2020-03-02 12:41:24 · 116 阅读 · 0 评论 -
Python数据结构与算法之 常见时间复杂度与计算规则
常见的时间复杂度(大O表示法):O(1):常熟阶O(n):线性阶O(n2):平方阶O(logn):对数阶O(nlogn):nlogn阶O(n3):立方阶O(2n):指数阶大小关系: O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)Python中衡量代码的时间复杂度...原创 2020-03-02 12:41:12 · 996 阅读 · 0 评论 -
Python数据结构与算法之 最坏时间复杂度与计算规则
[1, 5, 4, 7, 8, 62, 10] 最坏的情况(执行步骤最多)[1, 2, 3, 4, 5, 6, 7] 最好的情况(执行步骤最少)在衡量算法复杂度的时候, 一般采用 最坏时间复杂度时间复杂度计算的基本规则:所有的语言都具备的控制流程:顺序,条件,循环基本操作:只有常数项,其复杂度为O(1)顺序结构:+循环结构:*分支:时间复杂度取最大值判断算法效率时,旺旺只要操...原创 2020-03-02 12:40:58 · 372 阅读 · 0 评论 -
Python数据结构与算法之 时间复杂度与大O表示法
a+b+c=100, 且a2+b2=c2,求满足条件的所有a,b,c的值import timestart_time = time.time()for a in range(1001): for b in range(1001): for c in range(1001): if a + b + c == 100 and a**2 + b**2...原创 2020-03-02 12:40:44 · 307 阅读 · 0 评论