编程语言
首页 > 编程语言> > python---常见的排序算法--持续更新

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