【菜鸟笔记|算法导论】十大排序算法总结与python实现

本文总结了十大排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序、堆排序、快速排序、计数排序、基数排序和桶排序。这些排序算法中,比较排序如冒泡、选择、插入等通过元素比较确定顺序,非比较排序如计数、基数、桶排序则不依赖比较。文中还简述了各排序算法的原理,并提供了部分Python实现代码。
摘要由CSDN通过智能技术生成

算法导论中提到了七种排序算法,再加上冒泡排序、选择排序、希尔排序,构成我们常说的十大排序算法。其中冒泡、选择、插入、希尔、归并、堆、快速排序都是比较排序算法(即通过对元素进行大小比较来确定顺序);计数、基数、桶排序都是非比较排序算法。十大排序算法的性能比较如下表:
在这里插入图片描述
下面将简单描述十大排序算法的原理,并分别用python实现。笔记自用就不附原理图了,如果对原理有疑问请参阅算法导论那本书,里面算法运行过程图解是非常清楚的。

1.冒泡排序

比较相邻两个数,若前面的数比后面的数大,则交换位置。每一轮最大的数沉底,越小的数就能逐渐换到数组的前面,就像冒泡一样,因此称为冒泡排序。

def BubbleSort(a):
    n=len(a)
    for i in range(n):
        for j in range(n-i-1):
            if a[j]>a[j+1]:
                a[j],a[j+1]=a[j+1],a[j]

2.选择排序

遍历数组,找到最小值,交换最小值和第一个数的位置。然后从第二个数开始遍历,以此类推。

def SelectionSort(a):
    n=len(a)
    for i in range(n):
        min=i
        for j in range(i+1,n):
            if a[j]<a[min]:
                min=j
        a[i],a[min]=a[min],a[i]

3.插入排序

(书2.1节,9页开始)插入排序很像排序扑克牌。拿到一张牌,与前面的牌比较,插入合适的位置,这个位置原来的牌后移。但是每次只移动一位。

def InsertionSort(a):
    n=len(a)
    for j in range(1,n):
        key=a[j]
        i=j-1
        while i>=0 and a[
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值