常用算法模板
快速排序
def quick_sort(arr): if len(arr) <= 1: # 基本情况:如果数组为空或只有一个元素,则返回 return arr else: pivot = arr[0] # 选择基准值(可以选择第一个元素) less_than_pivot = [x for x in arr[1:] if x <= pivot] # 小于等于基准值的元素 greater_than_pivot = [x for x in arr[1:] if x > pivot] # 大于基准值的元素 # 递归排序子列表,并合并结果 return quick_sort(less_than_pivot) + [pivot] + quick_sort(greater_than_pivot)
归并排序
- 确定分界点 mid = (1+r) / 2
- 递归排序left right
- 归并 合二为一
def merge_sort(arr): # 如果数组长度小于等于1,直接返回 if len(arr) <= 1: return arr # 找到数组的中间点 mid = len(arr) // 2 # 递归分割数组 left_half = merge_sort(arr[:mid]) right_half = merge_sort(arr[mid:]) # 合并已排序的子数组 return merge(left_half, right_half) def merge(left, right): sorted_array = [] i = j = 0 # 合并两个子数组 while i < len(left) and j < len(right): if left[i] < right[j]: sorted_array.append(left[i]) i += 1 else: sorted_array.append(right[j]) j += 1 # 追加剩余元素 sorted_array.extend(left[i:]) sorted_array.extend(right[j:]) return sorted_array
本文作者:清澈的澈
本文链接:https://www.cnblogs.com/lmc7/p/18521819
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步