选择排序(LOW)

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ def select_sort(li): for i in range(len(li)-1): # i是第几趟 min_loc = i for j in range(i+1, le

插入排序(LOW)

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ def insert_sort(li): for i in range(1, len(li)): # i 表示摸到的牌的下标 tmp = li[i] j = i - 1 # j指的

快速排序(NB)

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ def partition(li, left, right): tmp = li[left] while left < right: while left < right and

堆排序(标准版)(NB)

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ import random def sift(li, low, high): # 堆的向下调整(大根堆) """ :param li: 列表 :param low: 堆的根节点位置

堆排序(内置模块 heapq )(NB)

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ import heapq # q->queue 优先队列 import random li = list(range(10)) random.shuffle(li) print(l

堆排序(topk 问题)(NB)

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ # 比较排序 import random def sift(li, low, high): # 堆的向下调整(小根堆) i = low j = 2 * i + 1 tmp = li

归并排序(递归)(NB)

博客地址:https://www.cnblogs.com/zylyehuo/ 递归思路 # _*_coding:utf-8_*_ import random def merge(li, low, mid, high): i = low j = mid + 1 ltmp = [] while i <=

希尔排序

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ import random def insert_sort_gap(li, gap): for i in range(gap, len(li)): # i 表示摸到的牌的下标 tm

计数排序

博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ import random def count_sort(li, max_count=100): count = [0 for _ in range(max_count + 1)]

桶排序

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- import random def bucket_sort(li, n=100, max_num=10000): buckets = [[] for _ in range(n

基数排序

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- # O(n) O(kn) # NB O(nlogn) import random def radix_sort(li): max_num = max(li) # 最大值 9-

栈的应用(后进先出 LIFO)--括号匹配问题

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- class Stack: def __init__(self): self.stack = [] def push(self, element): self.stack.ap

队列的实现方式(先进先出 FIFO)--环形队列

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- class Queue: def __init__(self, size=100): self.queue = [0 for _ in range(size)] self.s

队列的内置模块(deque)--双向队列

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- from collections import deque q = deque([1,2,3,4,5], 5) q.append(6) # 队尾进队 print(q.popl

利用队列的内置模块(deque)模拟 Linux 下的 tail 命令(输出文件中最后几行的内容)

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- from collections import deque def tail(n): # n:指定输出文件中最后几行 with open('test.txt', 'r') a

使用栈解决迷宫问题(深度优先搜索 / 回溯法)

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- maze = [ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 1, 0, 0, 0, 1, 0, 1], [1, 0, 0, 1, 0

使用队列解决迷宫问题(广度优先搜索 / 最短路径)

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- from collections import deque maze = [ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 1, 0,

链表的创建&遍历打印

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- class Node: def __init__(self, item): self.item = item self.next = None # 头插法 def creat

哈希表(实现 Python 中的集合 set)

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- class LinkList: class Node: def __init__(self, item=None): self.item = item self.next =

树的实例--模拟文件系统

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- class Node: # 链式存储 def __init__(self, name, type='dir'): self.name = name self.type = t