数据结构与算法
基础的数据结构与常见的排序算法
抱着我的智商
每天积累一点点!
展开
-
数据结构-Python实现单向循环链表
单向循环链表原创 2020-06-01 16:51:48 · 127 阅读 · 0 评论 -
数据结构与算法-Python实现快速排序
算法原理快速排序是一种分而治之思想在排序算法上的应用。它从序列中挑出一个元素作为基准值,然后以此基准,左边元素均比它小,右边均比它大,这样形成了左右两个子序列,再分别使用快速排序,以此类推。原理图如下: 时间复杂度最优时间复杂度:O(nlogn), 最坏时间复杂度O(n^2)算法步骤从序列中挑出一个元素作为基准元素。重新排序序列,元素比基准值小的摆放在基准前面,元素比基准值大的摆在基准的后面,在这个分区操作完成后,基准值处于序列的中间位置。递归地把小于基准值元素的子序列和大于基准值元素的子序原创 2020-05-18 16:29:54 · 161 阅读 · 0 评论 -
数据结构与算法-Python实现希尔排序
算法原理希尔排序是对插入排序的改进,它对序列取了一个间隔,对指定间隔的元素进行插入排序,并逐步降低间隔,原理图如下:时间复杂度算法步骤算法实现原创 2020-05-14 16:55:45 · 134 阅读 · 0 评论 -
数据结构与算法-Python实现插入排序
算法原理思想与选择排序相似,同样是将一个序列分成两个部分:有序和无序,但是插入排序不对无序序列进行操作,而是在有序序列中执行操作。原理图如下:时间复杂度最坏时间复杂度 为O(n^2),最优时间复杂度为O(n)算法步骤将初始序列的第一个元素作为已经排好的序列,序列后面的元素作为未排序序列按顺序拿到未排序序列中的每一个元素,并与前面的已排序序列进行比较,将元素插入到合适的位置。(带插入元素如果比已排序序列中的元素小,就插入到相应元素的前面,相等或大于就插入到后面)算法实现def inser原创 2020-05-12 15:53:10 · 163 阅读 · 0 评论 -
数据结构与算法-Python实现选择排序
算法原理将一个序列分成两个部分,前面的部分是有序的,后面的部分是无序的,我们始终从无序的元素序列中找出最小的元素值,然后放入前面的部分,算法原理图如下:时间复杂度最坏时间复杂度和最优时间复杂度均为 O(n^2)算法步骤首先在初始的序列中找到最小的元素,存放到序列的开始位置。再从剩余的未排序的序列中继续寻找最小的,放在已排序序列的末尾重复上述的步骤,直到所有的元素排序完成算法实现def select_sort(alist): """选择排序""" n = len(ali原创 2020-05-12 09:51:48 · 109 阅读 · 0 评论 -
数据结构与算法-Python实现冒泡排序
冒泡排序原创 2020-05-11 16:07:17 · 176 阅读 · 0 评论 -
数据结构-Python实现单链表
Python中实现单链表关于链表链表是一种将元素存放在通过连接构造出来的一系列存储块中的结构。链表的结构由两部分组成:数据区(存储数据)+链接区(存储地址),这样的结构称为一个结点,如图所示:下面是一个单链表的例子:箭头显示了单个链接列表中的节点是如何组合在一起的。链表的实现节点结构的定义前面说过,链表每一个节点是由两部分组成的数据区+链接区,因此在定义时需要标示出来。class Node(object): """定义一个节点类""" def __init__(self原创 2020-05-09 09:17:53 · 365 阅读 · 0 评论