![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python数据结构
文章平均质量分 60
有情怀的机械男
这个作者很懒,什么都没留下…
展开
-
python数据结构《排序专题复习》
目录常见的三种排序方法冒泡排序插入排序选择排序其他经典的排序方法快速排序堆排序归并排序希尔排序不同排序方法的各维度对比排序方式的稳定性:若两个相同的元素在排序前后的相对位置不发生改变的排序为稳定排序,否则不稳定排序常见的三种排序方法以【3,2,2,1,1】为例冒泡排序冒泡排序思路:不断地对比相邻的两个元素,将若前面的元素 大于(注意不含等于) 后面的元素,则两个元素进行位置交换。# 冒泡排序,复杂度为O(n^2)def bubb..原创 2021-08-12 01:39:49 · 186 阅读 · 0 评论 -
【Python数据结构】——并查集的实现(查找、合并、集合、实例)
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2021/7/30 23:12# @Author : @linlianqin# @Site : # @File : 并查集专题(合并、查找、集合).py# @Software: PyCharm# @description:'''并查集其实就是多个数组,每一个数组都是一颗树,然后并查集相当于是一个森林基本操作:合并(union)查找(find)集合(se.原创 2021-07-31 00:59:23 · 606 阅读 · 0 评论 -
【Python数据结构】——二叉平衡树AVL(查找、构建、删除、插入、打印、遍历)
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2021/7/28 20:57# @Author : @linlianqin# @Site : # @File : 二叉平衡树专题(创建、插入、查找).py# @Software: PyCharm# @description:'''二叉平衡树的特点:在二叉查找树的基础上对每一个节点的左右子树的高度进行了规定——每一个节点的左右子树的高度差不超过11)任何一.原创 2021-07-29 02:10:10 · 650 阅读 · 0 评论 -
【Python数据结构】——二叉查找树(查找、构建、删除、插入、打印)
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time : 2021/7/15 0:34# @Author : @linlianqin# @Site : # @File : 二叉查找树类实现(查找、创建、删除、插入、遍历).py# @Software: PyCharm# @description:class TreeNode: def __init__(self, val, left=None, right=None).原创 2021-07-15 00:47:12 · 877 阅读 · 3 评论 -
【Python位运算】——左移操作(<<)右移操作>>
python 位运算【左移操作和右移操作】原创 2021-07-10 01:14:43 · 22178 阅读 · 6 评论 -
【数据结构】——排序算法系列总结
1、空间复杂度空间复杂度产生的原因有两个:①重新定义了一块空间用于存储数据;②递归产生了栈空间冒泡排序、选择排序、堆排序和插入排序属于原地实现排序,因此空间复杂度为常数级别快速排序,在算法中虽然没有使用到另外的空间,但是是通过递归来实现的,而递归会产生栈空间,一般为O(nlogn)对于归并排序,内部也使用了递归,但是它使用了额外的空间来存储排好序的元素,其复杂度为O(n),大于递归复杂度O(nlogn)2、稳定性判断一个排序算法的稳定性就是通过看排序结束后两个相同数据的相对位置是..原创 2020-10-29 15:49:45 · 108 阅读 · 0 评论 -
【数据结构】——冒泡排序、插入排序、选择排序
# 冒泡排序,复杂度为O(n^2)def bubble_sorted(li:list)->list: for i in range(len(li)):# 第几趟 exchanged = False# 这个是为了防止多余的遍历,如果前面的元素已经是排序好的,那就不需要再进行比较了,减少运行时间 for j in range(len(li)-1):# 遍历列表元素 if li[j] > li[j+1]: li[j],li[j+1] = li[j+1],li[j] .原创 2020-10-29 15:29:31 · 140 阅读 · 0 评论 -
【数据结构】——归并排序
目录一、代码二、随笔一、代码'''归并排序的主要思路:将两个有序的子列表归并为一个有序的大列表'''#归并函数,假设li是由左右两个有序的子列表组成,假设两个子列表都是从小到大排好序的列表def merge(li,low,mid,high): ''' :param li: 由左右两个有序的子列表组成的大列表 :param low: 列表的起始索引 :param mid: 两个子列表的分解处的索引,这里取前面子列表的最后一个元素的索引为mid :param hi.原创 2020-10-29 13:34:02 · 159 阅读 · 0 评论 -
【数据结构】——堆排序
目录一、视频链接:二、随笔笔记三、代码实现(构造堆、向下调整)自定义+内置函数四、堆排序之topk问题的应用一、视频链接:https://www.bilibili.com/video/BV1mp4y1D7UP?p=19https://www.bilibili.com/video/BV1mp4y1D7UP?p=20https://www.bilibili.com/video/BV1mp4y1D7UP?p=21https://www.bilibili.com/video/B.原创 2020-10-29 10:26:52 · 242 阅读 · 0 评论 -
【数据结构】——快速排序
视频参考链接:https://www.bilibili.com/video/BV1mp4y1D7UP?p=17'''思想:假设是对一个list进行排序1、选取第一个元素作为p元素;2、将p元素归位,即将小于p元素的元素放在列表左边,将大于p元素的元素放在列表右边3、通过2实现了p元素的归位,这样就将列表分成了两个子列表,对左右两个子列表重复使用1、2步骤,实现快速排序'''import timedef partition1(li:list,left:int,right:int)-&g.原创 2020-10-26 20:28:21 · 263 阅读 · 0 评论