-- [数据结构]
数据结构知识
张烫麻辣亮。
练习时长两年半的程序员。
展开
-
常见的排序算法及其时间复杂度
文章目录1.冒泡排序 1.冒泡排序 思想::每次将最大的浮出去 最坏时间复杂度O(n^2),最好O(n) 内层循环:作用是将一个最大的数浮出外边,两两比较,比如十个数,两两比较再交换,无论交不交换比较需要经历10-1次,就是len-1 外层循环:作用是浮出的次数,例如十个数,第一次浮出一个,剩下的九个长度再浮出去,浮出一个又剩8个浮出去,总共需要len-1每次都-1,直到都浮出去 def bubble_sort(arr): for i in range(len(arr) - 1, 0, -1原创 2020-07-16 00:24:27 · 391 阅读 · 0 评论 -
关于Python列表和字典内置方法的时间复杂度
列表的内置操作的时间复杂度 操作 时间复杂度 解释 index x[] O(1) 通过一步操作就能够定位到索引的元素,而不是遍历所有元素,这也是Python中list结构的特点:允许对元素进行快速的随机访问(即检索位于特定索引位置的元素) append O(1) 只需要一步就能在list尾部追加元素 pop() O(1) 移除最后一个元素,可以直接定位,一步删除 pop(i) O(n) 移除指定元素,最坏的情况需要全部寻找一次 insert(i,item) O(n) 将其他位原创 2020-07-05 20:08:01 · 667 阅读 · 0 评论 -
Python中的二分查找(折半查找)
1.题目要求 在一个有序的列表中,寻找我们搜索值得索引,如果列表中有搜索值,返回索引,没有搜索的值返回None; 2.基本思想 (这里假设数组元素呈升序排列)将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止;如果xa[n/2],则我们只要在数组a的右 半部继续搜索x。 3.时间复杂度 4.代码实现 def binary_search(arr, search): low, high = 0, len(arr) - 1 # 第一次将最极端的两原创 2020-06-14 23:54:29 · 341 阅读 · 0 评论 -
了解数据结构中的单向链表和双向链表
链表定义:将元素存放在通过连接构造起来的一系列存储块中 一、单链表 定义:每个节点两部分,即元素区elem和链接区next(指向下一个节点的地址) 第一个节点叫头结点 最后一个节点叫尾结点 尾结点的链接区指向空 # 创建一个节点类 class Node(): def __init__(self, elem, next=None): self.elem =...原创 2020-05-04 17:26:29 · 635 阅读 · 0 评论 -
了解顺序表及其顺序表中的栈和队列
一、什么是顺序表 将元素顺序的存放在一块儿连续的存储区里,元素间的顺序关系由他们的存储顺序自然表示 二、顺序表的分类 1.同类型数据顺序表 顺序表都是存储一样的类型,例如: li=[200,390,78,121] 2.python中不同数据类型的顺序表 li=[12,'ab',1.111,1000] 面试题:python中不同类型的数据如何存储在同一个列表? 每一个数据类型所占得存储空间大...原创 2020-05-03 17:55:20 · 697 阅读 · 0 评论