交换两项位置方法:

# -*- coding: utf-8 -*-
def swap(lyst, i, j):temp = lyst[i]lyst[i] = lyst[j]lyst[j] = temp

排序算法:

选择排序
def selectionsort(lyst):i = 0while i < len(lyst) - 1:minIndex = ij = i + 1while j < len(lyst):if lyst[j] < lyst[minIndex]:minIndex = jj += 1if minIndex != i:swap(lyst, minIndex, i)i += 1排序前:
[9, 6, 7, 11, 3, 1, 0, -78, 2, -5, 10, 1]
排序后:
[-78, -5, 0, 1, 1, 2, 3, 6, 7, 9, 10, 11]冒泡排序
def bubbleSort(lyst):n = len(lyst)while n > 1:i = 1while i < n:if lyst[i] < lyst[i - 1]:swap(lyst, i, i - 1)i += 1n -= 1排序前:
[7, 1, 2, 5, 0, -1, -56, 2, 2, 2, 1, 0]
排序后:
[-56, -1, 0, 0, 1, 1, 2, 2, 2, 2, 5, 7]插入排序
def insertionSort(lyst): i = 1 while i < len(lyst): itemtoInsert = lyst[i] j = i - 1 while j >= 0: if itemtoInsert < lyst[j]: lyst[j + 1] = lyst[j] j -= 1 else: break lyst[j + 1] = itemtoInsert i += 1排序前:
[9, 1, 5, 10, -1, 13, 5, 8, 2, 1, 17, 4]
排序后:
[-1, 1, 1, 2, 4, 5, 5, 8, 9, 10, 13, 17]快速排序
def quicksort(lyst): quicksortHelper(lyst, 0, len(lyst - 1))def quicksortHelper(lyst, left, right):if left < right:pivotLocation = partition(lyst, left, right)quicksortHelper(lyst, left, pivotLocation - 1)quicksortHelper(lyst, pivotLocation + 1, right)def partition(lyst, left, right):middle = (left + right) // 2pivot = lyst[middle]lyst[middle] = lyst[right]lyst[right] = pivotboundary = leftfor index in range(left, right):if lyst[index] < pivot:swap(lyst, index, boundary)boundary += 1swap(lyst, right, boundary)return boundary排序前:
[9, 11, 5, 1, -1, 113, 5, -8, 20, 1, 17, 4]
排序后:
[-8, -1, 1, 1, 4, 5, 5, 9, 11, 17, 20, 113]合并排序
def mergeSort(lyst):copybuffer = []for i in range(len(lyst)):copybuffer.append(None)mergeSortHelper(lyst, copybuffer, 0, len(lyst) - 1)def mergeSortHelper(lyst, copybuffer, low, high):if low < high:middle = (low + high) // 2mergeSortHelper(lyst, copybuffer, low, middle)mergeSortHelper(lyst, copybuffer, middle + 1, high)merge(lyst, low, middle, high)def merge(lyst, low, middle, high):i1 = lowi2 = middle + 1for i in range(low, high + 1):if i1 > middle:copybuffer[i] = lyst[i2]i2 += 1elif i2 > high:copybuffer[i] = lyst[i1]i1 += 1elif lyst[i1] < lyst[i2]:copybuffer[i] = lyst[i1]i1 += 1else:copybuffer[i] = lyst[i2]i2 += 1for i in range(low, high + 1):lyst[i] = copybuffer[i]排序前:
[19, 4, 51, 10, -41, 113, 15, -84, 210, 11, 177, 4]
排序后:
[-84, -41, 4, 4, 10, 11, 15, 19, 51, 113, 177, 210]

五种排序算法 -- Python语言实现相关推荐

  1. 数组的常用五种排序算法

    目录 一.排序算法介绍 二.算法代码实现 1.选择法排序 2.冒泡法排序 3.交换法排序 4.插入法排序 5.折半法排序 一.排序算法介绍 1.选择法排序 选择法排序在排序过程中一共需要进行 n(n- ...

  2. JavaScript实现五种排序算法

    最近复习一些数据结构的算法,想着既然弄熟了JavaScript,倒不如用JavaScript来实现一下. 在数据结构中的排序算法中,大致可以分为五类:快速排序.插入排序.选择排序.归并排序.基数排序. ...

  3. python几种排序_Python实现几种排序算法

    Python实现几种排序算法 2018年11月12日 09:39 1.二分查找 import random def binary_search(li,target): start = 0 end = ...

  4. C语言中的几种排序算法

    C语言中的几种排序算法 在编程练习时,我们经常会遇到一些将一串乱序的数字排列成有序的数列(递增,递减)的问题,以此起到解决问题的效果.目前我使用的比较熟练的有三种排序算法,冒泡排序法,快速排序法,另外 ...

  5. 五种排序方式gif展示【python】

    简述 有五种排序方式. 文章目录 简述 排序 简单排序 冒泡排序 选择排序 归并排序 快速排序 排序 简单排序 import numpy as np import matplotlib.pyplot ...

  6. 《数据结构与算法 Python语言描述》 读书笔记

    已经发布博客 <数据结构与算法 Python语言描述> 读书笔记 第二章 抽象数据类型和Python类 2.1 抽象数据类型abstract data type:ADT 2.1.1 使用编 ...

  7. 数据结构python课后答案_数据结构与算法:Python语言描述 1~5章课后习题

    数据结构与算法:Python语言描述 1~5章课后习题 发布时间:2018-07-19 20:42, 浏览次数:1885 , 标签: Python MarkDown语法写的,不知道为啥上传到CSDN不 ...

  8. php常用的四种排序算法

    纯当练习,高手请绕过.以一维数组为例. 1.插入排序 思想: 每次将一个待排序的数据元素插入到前面已经排好序的数列中,使数列依然有序,知道待排序数据元素全部插入完为止. 示例: [初始关键字] [49 ...

  9. python实现五大基本算法_算法基础:五大排序算法Python实战教程

    排序是每个算法工程师和开发者都需要一些知识的技能. 不仅要通过编码实现,还要对编程本身有一般性的了解. 不同的排序算法是算法设计如何在程序复杂性,速度和效率方面具有如此强大影响的完美展示. 让我们来看 ...

最新文章

  1. 修改Nginx默认80端口指向目录
  2. python编写Mysql自动备份脚本
  3. Java笔记-解决Required long parameter 'XXX' is not present
  4. python os 常用方法
  5. 公司聚餐完毕,明日启程回家过年
  6. 重启framework命令及framework.jar引用
  7. 使用VSCode玩转Java (二)
  8. 金蝶14.0系统服务器安装教程,大神面对win7系统安装金蝶kis14.0的方式
  9. 检测压缩包并处理的Linux脚本(解压、批量修改文件名、导入)分析
  10. 时间序列数据的多元回归_清理和理解多元时间序列数据
  11. 东软实训告诉你:职场上不该说的13种话
  12. python新疆自驾旅游推荐系统毕业设计源码111042
  13. JDK8新特性Stream流使用详解
  14. Linus Torvalds 在 22 号宣布Linux 5.18发布
  15. 如何制作饼图?制作步骤有哪些?专业的饼图制作软件
  16. Sneaky Sasquatch Mac(捣蛋大脚怪搞怪冒险游戏)
  17. 无分类编址CIDR(构造超网)
  18. 找漏洞赚外快?给ChatGPT挑毛病,最高奖励14万
  19. 如何安装和使用A-ops工具?
  20. 合作式智能运输系统 应用层交互技术要求 第 1 部分:意图共享与协作

热门文章

  1. Android应用免费推广渠道/策略
  2. ​ICLR 2023 | 基于知识图谱的多模态类比推理
  3. Ruoyi 参数验证
  4. sizeof()导致的野指针问题,(Xuexi.exe 中)处有未经处理的异常: 0xC0000005: 写入位置 0x0000000F 时发生访问冲突。
  5. 二极管钳位的作用原理
  6. 第二季2:视频缓存池的简介
  7. DDR3控制器 1;
  8. Zynq Linux 使用 SPI ADC (ADS8332)
  9. wps拼写检查词典下载_如何从谷歌浏览器拼写词典中删除单词
  10. 组装台式计算机需要什么区别,台式电脑怎么选 自己组装和整机买到底有什么区别...