Python实现十大经典排序算法

12 篇文章 1 订阅
1 篇文章 0 订阅

冒泡排序:

1.比较每一对相邻的元素。如果第一个比第二个大,就交换他们两个,这步做完后,最后的元素会是最大的数。
2.针对所有的元素重复以上的步骤,除了最后一个。
3.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

实现代码:

def Bubble_sort(arr):
    for i in range(1,len(arr)):
        for j in range(0,len(arr)-i):
            if arr[j]>arr[j+1]:
                arr[j],arr[j+1]=arr[j+1],arr[j]
    return arr

选择排序:

1.首先在序列中找到最小(大)元素,存放到序列的起始位置。
2.再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

实现代码:

def Sel_sort(arr):
    for i in range(len(arr)):
        for j in range(i+1,len(arr)):
            if arr[i]>arr[j]:
                arr[i],arr[j]=arr[j],arr[i]
    return arr

插入排序:

1.将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
2.从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

实现代码:

def Insert_sort(arr):
    for i in range(1,len(arr)):
        tmp=arr[i]
        for j in range(i-1,-1,-1):
            if tmp<arr[j] and j>=0:
                arr[j+1]=arr[j]
                arr[j]=tmp
    return arr

--------------------------------------------------------------------------------------未完待续---------------------------------------------------------------------------------













希尔排序:

希尔排序的整体思想是将固定间隔的几个元素之间排序,然后再缩小这个间隔。这样到最后数列就成为了基本有序数列,而前面我们讲过插入排序对基本有序数列排序效果较好。
1.计算一个增量(间隔)值
2.对元素进行增量元素进行比较,比如增量值为7,那么就对0,7,14,21…个元素进行插入排序
3.然后对1,8,15…进行排序,依次递增进行排序
4.所有元素排序完后,缩小增量比如为3,然后又重复上述第2,3步
5.最后缩小增量至1时,数列已经基本有序,最后一遍普通插入即可

实现代码:

def shell_sort(arr):
    
    gap=len(arr)//2
    while gap>=1:
        for i in range(len(arr)-gap):
            if arr[i]>arr[i+gap]:
                arr[i],arr[i+gap]=arr[i+gap],arr[i]
        if gap==1:
            arr2=Insert_sort(arr)
        gap //=2
    return arr2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值