leetcode常规算法题复盘(基础篇)——十大排序算法(一)
因为上一期挖了大坑,菜鸡博主说到做到,用python复现了一遍《十大排序算法》作为基础篇庆祝博客的回归。废话少说,上代码。
一、冒泡排序
双层循环判别语句,最后交换值
1 ############################## 2 # 1、冒泡排序 # 3 ############################# 4 def BubbleSort(array): 5 for i in range(len(array)-1): 6 for j in range(len(array)-i-1): 7 if array[j]>array[j+1]: 8 temp = array[j+1] 9 array[j+1] = array[j] 10 array[j] = temp 11 return array
二、选择排序
双层循环记录最小(大)值索引,最后交换值
1 ############################## 2 # 2、选择排序 # 3 ############################# 4 def SelectionSort(array): 5 for i in range(len(array)): 6 min_index = i 7 for j in range(i,len(array)): 8 if array[j]<array[min_index]: 9 min_index = j 10 temp = array[i] 11 array[i] = array[min_index] 12 array[min_index] = temp 13 return array
三、插入排序
注意数值向后传递。
1 ############################## 2 # 3、插入排序 # 3 ############################# 4 def InsertionSort(array): 5 for i in range(1,len(array)): 6 cur = array[i] 7 pre = i-1 8 while(pre>=0 and cur<array[pre]): 9 array[pre+1] = array[pre] 10 pre += -1 11 array[pre+1] = cur 12 return array
四、希尔排序(1/2方法)
用于处理大型数据的插入排序升级版,注意1变为gap,同向后传递值。
1 ############################## 2 # 4、希尔排序(1/2方法) # 3 ############################# 4 def ShellSort(array): 5 lenth = len(array) 6 gap = lenth//2 7 while(gap): 8 print(gap) 9 for i in range(gap,lenth): 10 cur = array[i] 11 pre = i-gap 12 while(pre>=gap-1 and cur<array[pre]): 13 array[pre+gap] = array[pre] 14 pre = pre-gap 15 array[pre+gap] = cur 16 gap = gap//2 17 return array
五、归并排序
分治、递归思想
1 ############################## 2 # 5、归并排序 # 3 ############################# 4 def MergeSort(array): 5 lenth = len(array) 6 if lenth<2: 7 return array 8 middle = lenth//2 9 left = array[0:middle] 10 right = array[middle:] 11 return merge(MergeSort(left),MergeSort(right)) 12 13 def merge(left,right): 14 result = [] 15 while(len(left)>0 and len(right)>0): 16 if left[0] <= right[0]: 17 result.append(left.pop(0)) 18 else: 19 result.append(right.pop(0)) 20 while(len(left)): 21 result.append(left.pop(0)) 22 while(len(right)): 23 result.append(right.pop(0)) 24 return result
分类:
leetcode复盘
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现