![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python数据结构算法
痴迷、淡然~
Life is 10% what happens to you and 90% how you react to it.
展开
-
Python单链表
Python单链表# 节点class Node: def __init__(self, elem=None): self.elem = elem self.next = None# 单链表class SingleLinkList: def __init__(self, node=None): self.__head = n...原创 2019-08-05 20:12:56 · 572 阅读 · 0 评论 -
Python二分查找
Python二分查找1. 非递归实现def binary_search(alist, item): first = 0 last = len(alist) - 1 while first <= last: mid_point = (first+last)//2 if alist[mid_point] == item: ...原创 2019-08-21 21:27:50 · 1966 阅读 · 0 评论 -
Python归并排序
Python归并排序思想:将序列不断二分至序列长度为1将子序列两两排序合并,最终返回有序序列def merge_sort(alist): '''归并排序''' n = len(alist) if n <= 1: return alist mid = n // 2 # 二分 left = merge_...原创 2019-08-21 21:11:42 · 568 阅读 · 1 评论 -
Python快速排序
Python快速排序思想:每次选择一个数字,固定该数字的正确排序位置,即使得该数字左边的值全小于它,右边的值全大于它该数字的左序列和右序列递归执行上一步def quick_sort(alist, start, end): '''快速排序''' if start >= end: return mid_value = alist...原创 2019-08-21 20:57:12 · 338 阅读 · 0 评论 -
Python希尔排序及优化
Python希尔排序及优化希尔排序背景:插入排序在小规模数据、数据基本有序时效率较高思想:将序列分为若干子序列进行插入排序,待序列基本有序时,对整体进行插入排序分析:将序列以步长分组,组内数据进行插入排序;步长逐渐减小,执行上一步,直至步长为1;对整体进行插入排序(步长为1)。def shell_sort(alist): '''希尔排序''' n =...原创 2019-08-21 20:07:32 · 300 阅读 · 0 评论 -
Python冒泡排序及优化、选择排序、插入排序及优化
Python冒泡排序及优化、选择排序、插入排序及优化1. 冒泡排序def bubble_sort(alist): '''冒泡排序''' for i in range(len(alist)-1, 0, -1): # i表示每次遍历需要比较的次数,逐渐减小 for j in range(i): if alist[j] > alis...原创 2019-08-20 21:41:52 · 266 阅读 · 0 评论 -
Python二叉树广度、深度优先遍历和前、中、后序遍历
Python二叉树广度、深度优先遍历和前、中、后序遍历class Node: def __init__(self, elem=None, lchild=None, rchild=None): '''节点''' self.elem = elem self.lchild = lchild self.rchild = rchild...原创 2019-08-20 20:13:26 · 447 阅读 · 0 评论 -
Python栈
Python栈后进先出(LIFO,Last in First Out)class Stack: '''栈''' def __init__(self): self.__list = [] def push(self, item): '''添加一个新的元素item到栈顶''' self.__list.append(ite...原创 2019-08-11 15:06:46 · 374 阅读 · 0 评论 -
Python双向链表
Python双向链表class Node: '''节点''' def __init__(self, elem=None): self.elem = elem self.next = None self.prev = Noneclass DoubleLinkList: '''双向链表''' def __init__...原创 2019-08-11 15:01:03 · 148 阅读 · 0 评论 -
Python单向循环链表
Python单向循环链表class Node: '''节点''' def __init__(self, elem=None): self.elem = elem self.next = Noneclass SingleCycleLinkList: '''单向循环链表''' def __init__(self, node=None...原创 2019-08-11 14:57:59 · 282 阅读 · 0 评论 -
Python自定义队列
Python自定义队列先进先出(FIFO,First in First Out)class Queue: '''队列''' def __init__(self): self.__list = [] def enqueue(self, item): '''往队列中添加一个item元素,进队''' self.__list...原创 2019-08-13 16:07:21 · 1398 阅读 · 0 评论 -
Python堆排序
Python堆排序思想:构建堆输出堆分析:1. 构建堆从底向上,从右往左调整堆示例:图中节点表示索引调整顺序为:3 --> 2 --> 1 --> 0调整索引范围:[0, n//2-1],n为数组长度每次调整,从上往下(构建大根堆)比较父节点与子节点的最大值,将父节点与子节点的最大值交换父节点索引:father子节点...原创 2019-09-11 10:56:45 · 243 阅读 · 0 评论