当前位置: 首页 > news >正文

Python实现常见的排序算法

当涉及到排序算法时,一些常见的排序算法包括插入排序、选择排序、冒泡排序、快速排序、归并排序和堆排序。以下是使用Python实现这些常见排序算法的示例代码:

  1. 插入排序(Insertion Sort):
def insertionSort(arr):for i in range(1, len(arr)):key = arr[i]j = i - 1while j >= 0 and arr[j] > key:arr[j + 1] = arr[j]j -= 1arr[j + 1] = key
  1. 选择排序(Selection Sort):
def selectionSort(arr):for i in range(len(arr)):min_idx = ifor j in range(i+1, len(arr)):if arr[j] < arr[min_idx]:min_idx = jarr[i], arr[min_idx] = arr[min_idx], arr[i]
  1. 冒泡排序(Bubble Sort):
def bubbleSort(arr):n = len(arr)for i in range(n-1):for j in range(n-i-1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]
  1. 快速排序(Quick Sort):
def quickSort(arr):if len(arr) <= 1:return arrpivot = arr[len(arr) // 2]left = [x for x in arr if x < pivot]middle = [x for x in arr if x == pivot]right = [x for x in arr if x > pivot]return quickSort(left) + middle + quickSort(right)
  1. 归并排序(Merge Sort):
def mergeSort(arr):if len(arr) <= 1:return arrmid = len(arr) // 2left = mergeSort(arr[:mid])right = mergeSort(arr[mid:])return merge(left, right)def merge(left, right):result = []while len(left) > 0 and len(right) > 0:if left[0] <= right[0]:result.append(left.pop(0))else:result.append(right.pop(0))result.extend(left)result.extend(right)return result
  1. 堆排序(Heap Sort):
def heapify(arr, n, i):largest = il = 2 * i + 1r = 2 * i + 2if l < n and arr[largest] < arr[l]:largest = lif r < n and arr[largest] < arr[r]:largest = rif largest != i:arr[i], arr[largest] = arr[largest], arr[i]heapify(arr, n, largest)def heapSort(arr):n = len(arr)for i in range(n // 2 - 1, -1, -1):heapify(arr, n, i)for i in range(n - 1, 0, -1):arr[i], arr[0] = arr[0], arr[i]heapify(arr, i, 0)
http://www.lryc.cn/news/140723.html

相关文章:

  • 【git】fatal: refusing to merge unrelated histories
  • 在编辑器中使用正则
  • 【Linux】腾讯云服务器(Linux版)如果获取UUID(通用唯一标识符)
  • CSerialPort教程4.3.x (4) - CSerialPort在QT中的使用
  • 自然语言处理从入门到应用——LangChain:链(Chains)-[基础知识]
  • [ubuntu]linux服务器每次重启anaconda环境变量失效
  • 【数据结构】如何用栈实现队列?图文解析(LeetCode)
  • 蓝桥杯上岸每日N题 (闯关)
  • 基于Python3 的 简单股票 可转债 提醒逻辑
  • Python“牵手”京东工业商品详情数据采集方法,京东工业商数据API申请步骤说明
  • 【LeetCode-中等题】3. 无重复字符的最长子串
  • 【教程】Java 集成Mongodb
  • ARM开发,stm32mp157a-A7核中断实验(实现按键中断功能)
  • kafka常用命名
  • 华为云开发工具CodeArts IDE for C/C++ 开发使用指南
  • 如何选择最适合你的SOLIDWORKS版本 硕迪科技
  • 通过双层负载均衡实现HTTPS代理的高并发处理和容错能力
  • Redis 整合中 Redisson 的使用
  • 数据结构(5)
  • R语言实现网状Meta分析(1)
  • Reactor 第十篇 定制一个生产的WebClient
  • 桃子叶片病害识别(Python代码,pyTorch框架,深度卷积网络模型,很容易替换为其它模型,带有GUI识别界面)
  • matlab使用教程(21)—求函数最值
  • Redis中 为什么Lua脚本可以保证原子性?
  • tda4 videnc-test-app: CONTINUOUS and STEPWISE FRAMEINTERVALS not supported
  • [已解决] libGL error: MESA-LOADER: failed to open swrast
  • JVM及垃圾回收机制
  • windows11不允许安装winpcap4.1.3
  • matlab使用教程(23)—优化函数的参数
  • 基于“互联网+ 服务供应链”的汽车道路救援系统对策分析