python-数据结构算法-排序(原理解释+代码)

本文介绍的排序包括:冒泡,选择,快排,插入,希尔

在这里插入图片描述

一、 冒泡排序

冒泡排序:
冒泡排序是基于相邻位置的两两比较,交换位置这个想法来的,每轮有一个数确定最终位置
1.从第一个数开始,第一个数和第二个数比较,如果前一个数大于后一个数,交换两者的位置,否则,不动
2.比较第二个数和第三个数的大小,如果前一个数大于后一个数,交换两者的位置,否则,不动
3.比较第三个和第四个数的大小,如果前一个数大于后一个数,交换两者的位置,否则,不动
……
4.直到倒数的两个数比较和交换完成,至此,完成了第一轮的排序,把最大的数放在了最后一个位置,确定倒数第一个位置的数(下图是一轮的图例)在这里插入图片描述
5.把第一位到倒数第二位的数进行以上步骤,确定倒数第二个位置的数
6.把第一位到倒数第三位的数进行以上步骤,确定倒数第三个位置的数
……
7.直到第一个位置的数确定,完成整个的冒泡排序

def bubble_sort(alist):
    end = len(alist)-1
    #执行完每轮循环都会少一个数,所以从后开始算
    for i in range(end, 0, -1):
        for j in range(i):
            if alist[j] > alist[j+1]:
            #相邻两个数的比较,把大的换到后面
                alist[j], alist[j+1] = alist[j+1], alist[j]
            else:
                continue
    return alist

if __name__ == '__main__':
    alist = [54,26,93,17,77,31,44,55,20]
    res = bubble_sort(alist)
    print(res)

二、选择排序

选择排序:
它的原理很简单,遍历(这个实际上是有一个比较过程,遍历的第一个数作为最大的数,不断当前位置的数比较,如果当前的数更大,把它的值给最大的数)数列找到最大的数直接放在它的最终位置
下面用排列成从大到小的数列举例解释:
遍历所有的数,找到最大/小的数放在第一位/最后一位
遍历剩下的数,找到剩下的数里最大/小的数放在第二位/最后二位
……
重复以上步骤
直到最后一个数放在了它最终位置

动图是整个排序的图示过程:
白色表示未排序的数
淡黄色表示已排序好的数
蓝色表示当前遍历的位置
红色表示遍历过程中得到的最小的数

def select_sort(alist):
    end = 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值