
数据结构
Chordx
这个作者很懒,什么都没留下…
展开
-
找零问题--动态规划学习笔记
1、递归 n = 0 def recursive_change(money,coins): global n if money == 0: return 0 minNumCoins = float("inf") for i in range(len(coins)): if money >= coins[i]: if money - coins[i] == 1: n += 1原创 2021-10-12 13:40:38 · 118 阅读 · 0 评论 -
topk问题
利用堆排序 小根堆 时间复杂度O(mlogk) # 小根堆 def sift_small(li,top,end): tmp = li[top] i = top j = 2*i + 1 while j <= end: if j + 1 <= end and li[j+1] < li[j]: j = j + 1 if li[j] < tmp: li[i] = li[j]原创 2021-06-21 11:34:09 · 123 阅读 · 0 评论 -
数据结构-学习笔记-堆排序
堆排序 1、二叉树 1.1 二叉树 每个节点最多有两个子节点,且左右子树的顺序不能任意颠倒 1.2满二叉树 深度为n, 由2^(n-1)个节点构成的二叉树为满二叉树 1.3完全二叉树 完全二叉树是由满二叉树而引出来的,设二叉树的深度为n, 如果1->(n-1)层均是满节点的,即为一个满二叉树,且第n层的所有节点都连续集中在左侧 2、堆(完全二叉树) 大根堆: 每一个父节点都比其子节点大 小根堆: 每一个父节点都比其子节点小 3、堆排序过程 1.构造堆 2.堆顶元素为最大原创 2021-06-18 18:04:46 · 247 阅读 · 0 评论 -
数据结构-学习笔记-快速排序
快速排序 左右指针的位置 递归 一般复杂度 O(nlogn) 每一层复杂度O(n),共有logn层 最坏复杂度O(n^2) 优化,随机选择一个数与第一个数交换位置 先选择一个数(可以是第一个数,也可以是其他位置的数,再跟第一个数交换位置) 从右边选择比其小的数放在左边指针位置,从左边选择比其大的数放置右边指针位置处,终止条件 算法框架 def Quick_sort(li,left,right): 终止条件(基例) mid = partion(li,left,righ原创 2021-06-17 11:30:23 · 129 阅读 · 0 评论 -
数据结构-学习笔记-插入排序
插入排序 初始时手里(有序区)只有一张牌 每次从无序区摸一张牌,插入到手里已有牌的正确位置 时间复杂度O(n^2) def Insert_sort(li): for i in range(1,len(li)): tem = li[i] # 摸的牌 for j in range(i-1,-1,-1): if li[j] > tem: li[j+1] = li[j] # 大的牌往右挪一步原创 2021-06-11 16:56:55 · 85 阅读 · 0 评论 -
数据结构-学习笔记-选择排序
选择排序 一趟排序记录最小的数,放到第一个位置 再一趟排序记录列表无序区最小的数,放在第二个位置 调用函数 def Seclect_sort_func(li): sort_list = [] for i in range(len(li)): min_li = min(li) sort_list.append(min_li) li.remove(min_li) return sort_list li = [9,2,5原创 2021-06-11 12:46:19 · 167 阅读 · 1 评论 -
数据结构-学习笔记-冒泡排序
冒泡排序 列表每两个相邻的书,如果前面的数比后面的大,则交换这两个数 一趟排序后,则无序区减少一个数,有序区增加一个数 趟数,无序区,指针的位置 时间复杂度 O(n^2) i = 0 (第一趟) {j = 0 to n - 1} 左闭右开 i = 1 (第二趟) {j = 0 to n - 2} 左闭右开 … i (第i+1趟) {j = 0 to n-i-1} 左闭右开 import random def Bubble_sort(li): print("排序前: %s"%li) fo原创 2021-06-10 18:53:22 · 175 阅读 · 0 评论 -
数据结构-学习笔记-查找
顺序查找 时间复杂度 O(n) import random def Linear_search(li,val): for index,v in enumerate(li): if v == val: return index li = list(range(10)) val = 3 random.shuffle(li) # 打乱顺序 print(li) Linear_search(li,val) # [4, 3, 7, 2, 8,原创 2021-06-10 16:43:17 · 72 阅读 · 0 评论