python中怎么比较两个列表的大小_python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法...
前言
排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。本文主要讲述python中经常用的三种排序算法,选择排序法,冒泡排序法和插入排序法及其区别。通过对列表里的元素大小排序进行阐述。
一、选择排序法
选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。
1. 算法步骤首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕
2. 动图演示
3. Python 代码实现
def selectionSort(arr):
# 求出arr的长度
n = len(arr)
# 外层循环确定比较的轮数,x是下标,arr[x]在外层循环中代表arr中所有元素
for x in range(n - 1):
# 内层循环开始比较
for y in range(x + 1, n):
# arr[x]在for y 循环中是代表特定的元素,arr[y]代表任意一个arr任意一个元素。
if arr[x] > arr[y]:
# 让arr[x]和arr列表中每一个元素比较,找出小的
arr[x], arr[y] = arr[y], arr[x]
return arr
print(selectionSort([1, 3, 1, 4, 5, 2, 0]))
二、冒泡排序法
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序还有一种优化算法,就是立一个 flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。但这种改进对于提升性能来说并没有什么太大作用。
1. 算法步骤比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
2. 动图演示
3. Python 代码实现
def bubbleSort(arr):
n = len(arr)
for x in range(n - 1):
for y in range(n - 1 - x):
if arr[y] > arr[y + 1]:
arr[y], arr[y + 1] = arr[y + 1], arr[y]
return arr
print(bubbleSort([1, 3, 1, 4, 5, 2, 0]))
三、插入排序法
插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。
1. 算法步骤将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
2. 动图演示
3. Python 代码实现
def insertionSort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and key < arr[j]:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
return arr
print(insertionSort([1, 3, 1, 4, 5, 2, 0]))
python中怎么比较两个列表的大小_python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法...相关推荐
- python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法
前言 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列.本文主要讲述python中经常用的三种排序算法,选择排序法 ...
- 黑盒测试技术中的等价类划分法、边界值分析法、因果图法和决策表法进行测试用例设计
一.实验目的 1.能熟练应用黑盒测试技术中的等价类划分法.边界值分析法.因果图法和决策表法进行测试用例设计. 2.对测试用例进行优化设计 二.实验环境 Windows系统+ Office工具 三.实验 ...
- python中如何将两个列表进行合并_Python中如何把两个list合并,并按从小到大顺序排列?...
本题分为两个部分:一个是list的合并,一个是用while loop循环将合并后的数组从小到大进行排序--排序问题. 1. List的合并: list的合并其实非常简单,只需要用"+&quo ...
- python求列表的中位数_python中获取中位数的两种方法
普通方法: 对列表进行排序,然后根据长度为奇数或者偶数的不同情况计算中位数 def huahua(x): length = len(x) print(length) x.sort() print(x) ...
- python列表切片得到的是列表还是字符串_python中列表的切片问题 python arry怎么取列切片...
python 列表切片赋值 对列表切片进行赋值,解释器处理时是直接将序列中的内容赋值过去的 ,还切片赋值,得到的与原变量无关,是两个不同的对象:直接赋值,引用的是同一个对象. 请看下例 切片赋值. a ...
- python列表对象相同_Python中的学习列表对象,List
List(列表) 是 Python 中使用最频繁的数据类型. 列表可以完成大多数集合类的数据结构实现.列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套). 列表是写在方括号 [ ...
- python中的可变数据类型有列表和元组_Python中列表的 += 和 .extend() 的异同
一道Python题 最近有朋友"考"了我一个Python的题:使用+=和.extend()两种方法扩展元组中的列表会发生什么.虽然我对Python中的可变数据类型.不可变数据类型的 ...
- python中不能使用下标运算的有哪些_Python中最常见的10个问题(列表)
列表是Python中使用最多的一种数据结果,如何高效操作列表是提高代码运行效率的关键,这篇文章列出了10个常用的列表操作,希望对你有帮助. 注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮 ...
- python只能对列表进行切片_Python中的列表
1. 列表的创建 列表(list)是Python中一个非常重要的类型,用于管理一组数据,列表的形式如下所示 country = ['China', 'Germany', 'Russia', 'Amer ...
最新文章
- VS 打开No EditorOptionDefinition export found for the given option name问题解决
- 「SAP技术」SAP 如何看序列号被包在哪些HU里?
- iOS:自己写的一个星级评价的小Demo
- android 相机路径,android – 如何获取刚从相机捕获的图像路径
- VueJS ajax综合案例
- netframework 4.0内置处理JSON对象
- oracle出现12505错误的解决步骤
- BAT54C不断电源保护电路
- 实战 Flutter 象棋从零到上架
- 基于深度图像的手势识别算法研究
- JavaSE基础20笔记IO流
- 基于Python 实现 Spirent TestCenter 自动化
- 【数据结构与算法】动态规划
- 曲阜水利学校计算机96级聚会,曲阜水利学校50年校庆
- 微信小程序网易云音乐轮播图右侧留白
- 申请高新技术企业认定需要多少专利?
- 个人开公司的流程,以后用得着
- 几何画板领衔起跑,提前启动双十一!
- 最强大的代码编辑器(IDE)——Atom。Atom介绍安装与插件配置(一)
- endnote参考文献排版_Endnote 导入参考文献的时候,格式错误太多了。是否有什么解决办法?...
热门文章
- [转载]设计模式解密(23) - 总结篇
- 100个最古老互联网域名 最久只有23年(附名单)
- OpenAI发布CLIP模型快一年了,盘点那些CLIP相关让人印象深刻的工作
- 经典重温:FAIR提出SlowFast,用双分支非对称网络处理不同采样率的视频!代码开源!...
- CVPR 2021奖项出炉:最佳论文花落马普所,何恺明获提名,首届黄煦涛纪念奖颁布...
- 简单粗暴的多目标跟踪神器 – DeepSort
- 商汤研究院-SpringAutoML团队招聘啦~
- WAIC开发者日倒计时一天,收藏好这份完整日程
- Python自学真的可以学好嘛?
- 【python教程入门学习】用Python制作迷宫GIF