当前位置: 首页 > 后端技术 > Python

python中对列表元素的大小进行排序(冒泡排序、选择排序和插入排序)——排序算法

时间:2023-03-25 22:30:27 Python

前言排序(Sorting)是计算机程序设计中的一个重要操作,其作用是将一个数据的任意序列的元素放入其中(或记录),重新排列成按键排序的序列。本文主要介绍python中常用的三种排序算法,选择排序、冒泡排序和插入排序以及它们的区别。通过排序列表中元素的大小来说明。我的博客:https://blog.zeruns.tech1.选择排序选择排序是一种简单直观的排序算法,无论输入什么数据,其时间复杂度都是O(n2)。所以在使用的时候,数据量越小越好。唯一的好处可能就是不占用额外的内存空间。1.算法步骤先在未排序的序列中找到最小(最大)的元素,存放在已排序序列的开头,然后继续从剩余的未排序的元素中寻找最小(最大)的元素,放在末尾的排序序列。重复第二步,直到所有元素都排好序2.动画演示3.Python代码实现defselectionSort(arr):#求arr的长度n=len(arr)#外层循环决定比较轮数,x为a下标,arr[x]表示外层循环中arr中的所有元素forxinrange(n-1):#内层循环开始比较foryinrange(x+1,n):#arr[x]Infory循环,它代表一个特定的元素,arr[y]代表任意arr的任意元素。ifarr[x]>arr[y]:#将arr[x]与arr列表中的每个元素进行比较,找出较小的arr[x],arr[y]=arr[y],arr[x]returnarrprint(selectionSort([1,3,1,4,5,2,0]))二、冒泡排序冒泡排序(BubbleSort)也是一种简单直观的排序算法。它迭代遍历要排序的数组,一次比较两个元素,如果顺序错误则交换它们。重复访问序列的工作,直到不需要交换,即序列已经排序。这个算法的名字来源于这样一个事实,即较小的元素会通过交换慢慢“浮”到序列的顶部。冒泡排序还有一个优化算法,就是设置一个flag。当序列遍历过程中没有交换元素时,证明序列已经有序。但是这种改进对提高性能没有多大作用。1.算法步骤比较相邻元素。如果第一个大于第二个,则交换它们。对每对相邻元素执行相同的操作,从开头的第一对到结尾的最后一对。完成这一步后,最后一个元素就是最大的数。对除最后一个元素之外的所有元素重复上述步骤。每次对越来越少的元素继续重复上述步骤,直到没有要比较的数字对。2.动画演示3.Python代码实现defbubbleSort(arr):n=len(arr)forxinrange(n-1):foryinrange(n-1-x):ifarr[y]>arr[y+1]:arr[y],arr[y+1]=arr[y+1],arr[y]返回arrprint(bubbleSort([1,3,1,4,5,2,0]))3.插入排序虽然插入排序的代码实现不像冒泡排序和选择排序那么简单粗暴,但是它的原理应该是最容易理解的,因为玩过扑克的人应该都能秒懂。插入排序是最简单直观的排序算法。它通过构建有序序列来工作。对于未排序的数据,在已排序的序列中从后往前扫描,找到对应的位置插入。插入排序和冒泡排序一样,也有一种优化算法,叫做分半插入。1、算法步骤将第一个待排序序列的第一个元素视为有序序列,将第二个元素至最后一个元素视为未排序序列。从头到尾按顺序扫描未排序的序列,并将每个扫描到的元素插入到已排序序列中的适当位置。(如果要插入的元素与有序序列中的某个元素相等,则将要插入的元素插入到相等元素之后。)2.动画demo3.Python代码实现definsertionSort(arr):foriinrange(1,len(arr)):key=arr[i]j=i-1whilej>=0andkey