python中的排序算法

1,内置的sorted函数

python内置的sorted函数是使用的Timsort算法,该算法是结合了合并排序(merge sort)和插入排序(insertion sort)

# python中的sort函数给字母排序,比较字母的ASCII码,从左往右单个字符的比较如"b">"abcd"

2,快速排序

快速排序的主要思想是从列表中找到一个值作为key,每执行一次快排就会将列表中比这个key大的和小的分开来放,下面我是新建了两个列表left和right,每次排序就会把比key大的放到right,比key小的放到left中,然后每次递归的过程中传过来的list1的长度会越来越小,当长度小于1的时候就返回

def quick_sort(list1):
    left=[]
    right=[]
# 当列表中只含有一个元素或者为空时返回
    if len(list1)<=1:
        return list1
# 注意此处的取到的key的值要弹出,在最后返回的时候再加进去
    key=list1.pop()
    for i in list1:
        if i>key:
            right.append(i)
        else :
            left.append(i)
# 此处要返回递归 会先计算left,因为加号是从左向右计算的,
    return quick_sort(left)+[key]+quick_sort(right)

3,冒泡排序

不断对相邻的两个数进行比较,每次将最大的数放到列表的最后

def mao_pao(list1):
    for i in range(len(list1)-1):
# 每次循环都会将最大的数放到列表末尾
        for j in range(0,len(list1)-1-i):
# 每次循环都会比较相邻的两个数,如果遇到前面的数比后面大,就交换
            if list1[j]>list1[j+1]:
                list1[j],list1[j+1]=list1[j+1],list1[j]
    return list1

4,选择排序

通过循环找到列表中最小数的下标,然后将第一个数和最小的数交换位置

def xuan_ze(list1):
    min_=0
    for i in range(len(list1)-1):
        for j in range(i,len(list1)):
            if list1[min_]>list1[j]:
                min_=j
        list1[i],list1[min_]=list1[min_],list1[i]
    return list1

猜你喜欢

转载自blog.csdn.net/qq_37568964/article/details/82258973
今日推荐