python---常见的排序算法--持续更新
作者:互联网
请参考动图:https://forum.mianbaoban.cn/data/attachment/forum/201803/20/140153i7562exzjrnagaja.gif
动图:https://blog.csdn.net/weixin_41571493/article/details/81875088
参考:https://www.cnblogs.com/zhizhan/p/4549099.html
1.冒泡排序
总结:冒泡排序,从第一个数开始,比较相邻两个数的大小,若第一个数比第二个数大,那么就交换他俩的位置,当我们完成一次冒泡排序时,最大的数已经出现在数组的最后一个位置上,南无我们重复执行这样的操作,将前边的大的数往后排。
def maopao(num_list):
n = len(num_list)
for i in range(n-1,0,-1): #防止出现索引超过列表限制的错误(使用倒序,从列表的n-1个数到第一个数,0不算)
for j in range(0,i):
if num_list[j] > num_list[j+1]:
num_list[j],num_list[j+1]=num_list[j+1],num_list[j]
return num_list
num1=[6,8,6,47,13,5,34,47]
print(maopao(num1))
2.选择排序
总结:规定一个已排序数列,在未排序数列中进行选举找到最小的,将最小的提取出来放在已排序数列的末尾,从而实现从小到大排序。
def choose(num_list):
n=len(num_list)
for i in range(0,n):
min = i #自定义一个最小的值
for j in range(i+1,n):
if num_list[j] < num_list[min]: #与未比较的数进行比较,循环找到最小的j的值,进行数值交换
num_list[min],num_list[j]=num_list[j],num_list[min]
return num_list
num1=[6,8,6,47,13,5,34,47]
print(choose(num1))
3.插入排序
总结:将第一个元素指定为已插入元素,取第二个数开始与他前边的数进行比较,若他比前边的数小,则前边的数后移一位,知道在前边的数中遇见比他还小的,则把它放在这个数后面。
def charu(num_list):
n = len(num_list)
for i in (1,n):
if num_list[i] < num_list[i-1]:
temp = num_list[i]
index = i
for j in (i-1,-1,-1):
if num_list[j] > temp: #若最小数的前边的数比他大,那么前边的数后移,最小数加到这个索引所在的位置
num_list[j+1]=num_list[j]
index = j
else:
break
num_list[index]=temp
return num_list
num1=[6,8,6,47,13,5,34,47]
print(charu(num1))
标签:num1,python,47,list,算法,num,排序,前边 来源: https://blog.csdn.net/woaizxy123/article/details/99641563