-- [数据结构]
数据结构知识
张烫麻辣亮。
练习时长两年半的程序员。
展开
-
常见的排序算法及其时间复杂度
文章目录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 · 392 阅读 · 0 评论 -
关于Python列表和字典内置方法的时间复杂度
列表的内置操作的时间复杂度操作时间复杂度解释index x[]O(1)通过一步操作就能够定位到索引的元素,而不是遍历所有元素,这也是Python中list结构的特点:允许对元素进行快速的随机访问(即检索位于特定索引位置的元素)appendO(1)只需要一步就能在list尾部追加元素pop()O(1)移除最后一个元素,可以直接定位,一步删除pop(i)O(n)移除指定元素,最坏的情况需要全部寻找一次insert(i,item)O(n)将其他位原创 2020-07-05 20:08:01 · 669 阅读 · 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 · 637 阅读 · 0 评论 -
了解顺序表及其顺序表中的栈和队列
一、什么是顺序表将元素顺序的存放在一块儿连续的存储区里,元素间的顺序关系由他们的存储顺序自然表示二、顺序表的分类1.同类型数据顺序表顺序表都是存储一样的类型,例如:li=[200,390,78,121]2.python中不同数据类型的顺序表li=[12,'ab',1.111,1000]面试题:python中不同类型的数据如何存储在同一个列表?每一个数据类型所占得存储空间大...原创 2020-05-03 17:55:20 · 697 阅读 · 0 评论