Python实现八大经典排序算法

1、写在前面的话

       本篇博客并不涉及到排序算法的理论讲解,具体理论可以参考reference的链接,并且强烈推荐数据结构和算法的可视化网站【0】。本文给出八种经典的排序算法的Python实现代码和部分注解,算是一个总结,也感谢网络众多优秀的博主分享他们的idea,站在巨人的肩膀上果然成长很迅速。排序可以说在经典算法中是很重要的一部分,对于常见的排序算法要做到本能的敲出代码,了解各种算法的时间复杂度和空间复杂度,关于时间复杂度和空间复杂度具体可以参考【1】。对于外部排序和线性时间的排序也请参考reference的链接。对于稳定性的判断,请记住口诀,不稳定:快选堆希  稳定:插冒归基。

2、Show me the code

冒泡排序:

def bubble(nums):
    if not isinstance(nums, list) or not nums:
        return -1
    #i控制几趟
    for i in range(1, len(nums)):
        # len(nums)-i因为最后有排好的数字
        for j in range(0, len(nums)-i):
            if nums[j] > nums[j+1]:
                nums[j], nums[j+1] = nums[j+1], nums[j]
    return nums

选择排序:

def select(nums):
    if not isinstance(nums, list) or not nums:
        return -1  

    for i in range(len(nums)-1):
        min_index = i
        # i+1 是开始从i之后的元素找到最小值,并用minindex标记上
        for j in range (i+1, len(nums)):
            if nums[j] < nums[min_index]:
                min_index = j
        #如果和最开始的标记的最小元素不等,就交换两个元素
        if min_index != i:
            nums[i], nums[min_index] = nums[min_index], nums[i]
    return nums

插入排序:


def insertionSort(nums):
    if not isinstance(nums, list) or not nums:
        return -1

    #i是控制处理的第几个元素
    for i in range(1,len(nums)):
        for j in range(i, 0, -1):
            # 如果比前面的元素小,则往前移动
            if nums[j] < nums[j-1]:
                nums[j], nums[j-1] = nums[j-1], nums[j]
            # 否则代表比前面的所有元素都小,不需要再移动
     
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值