网站建设的步骤教程视频,潍坊建设网站的公司,红豆网桂林论坛,做游戏交易网站今天总结一下Python中的排序算法。这篇文章有的排序算法是#xff1a;冒泡排序、选择排序、插入排序。
冒泡排序
先看一下代码。 冒泡排序
def bubble_sort(aList):n len(aList)for i in range(0, n - 1):for j in range(0, n - i - 1):if aList[j] aList[j 1]:aList…今天总结一下Python中的排序算法。这篇文章有的排序算法是冒泡排序、选择排序、插入排序。
冒泡排序
先看一下代码。 冒泡排序
def bubble_sort(aList):n len(aList)for i in range(0, n - 1):for j in range(0, n - i - 1):if aList[j] aList[j 1]:aList[j], aList[j 1] aList[j 1], aList[j]if __name__ __main__:li [54, 26, 93, 17, 77, 31, 44, 55, 20]print(li)bubble_sort(li)print(li)
冒泡排序的思路是
1、比较相邻的元素。如果第一个比第二个大升序就交换他们两个。
2、对每一对相邻元素作同样的工作从开始第一对到结尾的最后一对。
3、针对所有的元素重复以上的步骤除了最后一个。
过程分析 我就不拿这个代码来分析了我就说一下生活中是怎么用到冒泡排序的假设你们第一次上体育课一般上体育课的时候体育老师要的的事就是按照同学们的身高从低到高排序想必这个场景大家都很熟悉。假设班上的n位同学此时已经站成一队了这个时候是没有顺序的那么这里怎么用到排序算法来实现排序的呢。
1、首先体育老师先比较一下第一个同学(A)和第二个同学(B)的身高可以看到A比B的身高要高所以A和B换一下位置然后然后老师再比较第二个同学和第三个同学依次这样类推....等到所有同学比较一次比较一次可以看到最后一位同学是我们所有同学中身高最高的也就是说是列表里面数据最大的。
2、我们找出最高的同学了那么老师就可以想我下次在剩余的同学中再从第一位同学开始和相邻的同学比较我用同样的方法也可以找到剩余中身高最高的。
3、老师依次去循环第二步的操作一直等到只有一位同学并且那位同学是所有同学中最矮的然后老师排序结束。
选择排序 选择排序选择排序是每次找出最小的索引
然后替换数据的位置def select_sort(aList):选择排序l len(aList)for j in range(l):min_index jfor i in range(min_index 1, l):if aList[min_index] aList[i]:min_index i# 循环一遍后找到最小的索引aList[j], aList[min_index] aList[min_index], aList[j]if __name__ __main__:li [9 , 16, 17, 15, 11]print(li)select_sort(li)print(li)
选择排序的思路是
1、首先在未排序序列中找到最小大元素存放到排序序列的起始位置
2、再从剩余未排序元素中继续寻找最小大元素然后放到已排序序列的末尾。以此类推直到所有元素均排序完毕。
我们还是拿老师排队来举例子。此时每位同学手里都拿了一个号码假设从 0 ~ n ,
1、老师第一次要做的就是从这 n - 1 同学中找到最矮那位同学的编号老师怎么找呢还是从头开始两个两个相互比较等到从头到尾比较相互比较一次后老师知道谁身高最矮那位同学的编号(min_index)了。此时老师大喊一声min_index同学和第一位同学互换一下位置连同手中的号码牌也换一下。这个时候第一位同学就是全班中身高最矮的同学了这个时候我们可以将全班同学看成两部分一部分是有序的(假设一位同学也是有序的)另一部分是无序的也就是除第一个同学外其余的同学。
2、老师从没有顺序中的同学中再重复找到身高最矮同学的编号放到有序队列的末尾依次这样类推就把所有同学的身高有了个排序。
我们看出选择排序的主要思想是从无序队列中找出值最小的数据的编号然后放到有队列中只不过是这个有序队列一直在扩充无序队列一直在减少。
插入排序 插入排序def insert_sort(aList):插入排序n len(aList)for i in range(n):j i# print(j , j)while j 0:if aList[j] aList[j - 1]:aList[j], aList[j - 1] aList[j - 1], aList[j]# print(j)j - 1# print( )if __name__ __main__:li [54, 26, 93, 17, 77, 31, 44, 55, 20]print(li)insert_sort(li)print(li)
插入排序的思路
1、插入排序可以这样看待是将数据序列分成两部分前面一部分是有序的后面一部分是无序的。
2、怎么将将无序的变成有序的呢我们举个例子还是上面老师排队的例子。
首先从第一位同学开始然后第一位和第二位比较然后排序此时这两位同学是有序的了
然后我们再从从无序的队列中取出一位同学也就是第三位将第三位和第二位比较然后他们中矮的同学再和第一位比较此时这三位同学是有序的
然后再取出第四位同学然前面的比较.....一直到最后一位同学比较。