随笔分类 -  数据结构与算法

摘要:import random def bucket_sort(li,n=100,max_num=10000): buckets = [[] for _ in range(n)] for x in li: i = min(x // (max_num // n), n-1) buckets[i].appe 阅读全文
posted @ 2021-12-12 19:57 NAVYSUMMER 阅读(46) 评论(0) 推荐(0) 编辑
摘要:import random def radix_sort(li): max_value = max(li) it = 0 while 10 ** it <= max_value: buckets = [[]for _ in range(10)] for x in li: digit = (x // 阅读全文
posted @ 2021-12-12 19:43 NAVYSUMMER 阅读(44) 评论(0) 推荐(0) 编辑
摘要:import random def insert_sort_gap(li,gap): for i in range(gap,len(li)): tmp = li[i] j = i - gap while j >= 0 and li[j] > tmp: li[j+gap] = li[j] j -= g 阅读全文
posted @ 2021-12-04 14:53 NAVYSUMMER 阅读(46) 评论(0) 推荐(0) 编辑
摘要:import random def merge(li,low,mid,hight): i = low j = mid + 1 tmp = [] while i<=mid and j <= hight: if li[i] < li[j]: tmp.append(li[i]) i += 1 else: 阅读全文
posted @ 2021-11-28 15:09 NAVYSUMMER 阅读(50) 评论(0) 推荐(0) 编辑
摘要:import random def generate_big_root_heap(li,low,hight): i = low j = 2 * i + 1 tmp = li[i] while j <= hight: if j + 1 <= hight and li[j+1] > li[j]: j = 阅读全文
posted @ 2021-11-20 13:38 NAVYSUMMER 阅读(59) 评论(0) 推荐(0) 编辑
摘要:import random def generate_big_root_heap(li,low,hight): i = low j = 2 * i + 1 tmp = li[i] while j <= hight: if j + 1 <= hight and li[j+1] > li[j]: j = 阅读全文
posted @ 2021-11-20 12:02 NAVYSUMMER 阅读(58) 评论(0) 推荐(0) 编辑
摘要:def partation(li,left,right): tmp = li[left] while left < right: while left < right and li[right] >= tmp: # 右边找比tmp小的数 right -= 1 li[left] = li[right] 阅读全文
posted @ 2021-11-13 11:27 NAVYSUMMER 阅读(50) 评论(0) 推荐(0) 编辑
摘要:def insert_sort(li): for i in range(1,len(li)): j = i - 1 tmp = li[i] while j >= 0 and tmp < li[j]: li[j+1] = li[j] j -= 1 li[j+1] = tmp return li def 阅读全文
posted @ 2021-11-13 10:16 NAVYSUMMER 阅读(20) 评论(0) 推荐(0) 编辑
摘要:版本1 def select_sort(li): li_new = [] for i in range(len(li)): min_val = min(li) li_new.append(min_val) li.remove(min_val) return li_new li = [1,5,3,7, 阅读全文
posted @ 2021-10-01 21:51 NAVYSUMMER 阅读(22) 评论(0) 推荐(0) 编辑
摘要:版本1: def bubble_sort(li): length = len(li) for i in range(length): for j in range(length): if li[i] > li[j]: li[i],li[j] = li[j],li[i] li = [1,5,3,7,9 阅读全文
posted @ 2021-10-01 21:25 NAVYSUMMER 阅读(42) 评论(0) 推荐(0) 编辑
摘要:二分查找,需要先排序 def binary_search(li,val): left = 0 right = len(li)-1 while left <= right: mid = (left+right) // 2 if li[mid] == val: return mid elif li[mi 阅读全文
posted @ 2021-10-01 21:06 NAVYSUMMER 阅读(25) 评论(0) 推荐(0) 编辑
摘要:def line_search(li,val): for ix,v in enumerate(li): if v == val: return ix return None li = [1,5,3,7] ix = line_search(li,3) print(ix) 阅读全文
posted @ 2021-10-01 20:46 NAVYSUMMER 阅读(17) 评论(0) 推荐(0) 编辑
摘要:def hanoi(n,a,b,c): if n > 0: hanoi(n-1,a,c,b) print("moving from %s to %s"%(a,c)) hanoi(n-1,b,a,c) hanoi(3,"A","B","C") 阅读全文
posted @ 2021-10-01 20:36 NAVYSUMMER 阅读(91) 评论(0) 推荐(0) 编辑
摘要:“大O记法”:对于单调的整数函数f(n),如果存在一个整数函数g(n)和常数c>0,使得对于充分大的n总有f(n)<=c*g(n),就说函数g(n)是f(n)的一个渐近函数(忽略常量因子),记为f(n)=O(g(n))。易见,f(n)=O(g(n))说明在n趋于无穷大的时候,函数f的增长速度受到函数 阅读全文
posted @ 2018-09-23 16:40 NAVYSUMMER 阅读(956) 评论(0) 推荐(0) 编辑
摘要:算法设计就从实际问题出发,通过分析和思考最终得到的一个能解决问题的过程性描述的工作过程。 算法设计中一些常见的通用的想法可以称为算法设计模式。常用的算法设计模式有: 穷举法。根据具体的问题枚举出各种可能,从中选出有用的信息或者问题的解。利用计算机的速度优势可以方便的解决很多简单问题。 贪心法。根据问 阅读全文
posted @ 2018-09-23 16:05 NAVYSUMMER 阅读(746) 评论(0) 推荐(0) 编辑
摘要:采用自然语言描述。用自然语言描述的计算过程可能比较容易阅读,但可能比较冗长啰嗦,也容易出现歧义,造成读者的无解。 采用自然语言中结合一些数学公式的描述形式。主要是为了简洁、严格(消除歧义),减少误解的可能性。 采用严格定义的形式化记法形式的描述。例如: 采用某种通用的计算模型的描述方式。这种描述完全 阅读全文
posted @ 2018-09-23 15:36 NAVYSUMMER 阅读(1122) 评论(0) 推荐(0) 编辑
摘要:一个算法是对一种计算过程的一个严格描述,人们i通常认为的算法具有以下性质: 有穷性(算法描述的有穷性):一个算法的的描述由有限多条指令或语句构成。也就是说,算法必须能用有限长的描述说清楚。 能行性:算法中的指令(语句)的含义严格简单明确,所描述的操作(计算)过程可以机械的进行。 确定性:作用于所求解 阅读全文
posted @ 2018-09-23 15:07 NAVYSUMMER 阅读(3279) 评论(0) 推荐(0) 编辑
摘要:算法的性质 算法的描述 算法的设计与分析 阅读全文
posted @ 2018-09-23 15:07 NAVYSUMMER 阅读(269) 评论(0) 推荐(0) 编辑

交流群 编程书籍
点击右上角即可分享
微信分享提示