排序算法归纳总结

本文归纳了十种常见的排序算法,包括冒泡排序、插入排序、选择排序、归并排序、快速排序、堆排序、计数排序、希尔排序、桶排序和基数排序。通过详细解释每种排序算法的工作原理,如分治法在归并排序和快速排序中的应用,以及不同算法的特点,帮助读者理解和掌握排序算法的核心思想。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

整理一些常用的排序算法


一、冒泡排序

从左往右冒泡,比较相邻的两个元素,较小的放左边;只需选择前n-1个数进行排序,第一次排序需要比较n-1次,每次排序后下一次排序次数减1

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

二、插入排序

每次从指针右边数组中提取一个元素和指针左边数组元素比较,放入合适的位置,直到指针指向数组末尾

def insert_sort(nums):
    n = len(nums)
    for i in range(1,n):
        num = nums[i]
        j = i-1
        while j>=0:
            if nums[j]>num:
                nums[j+1] = nums[j]
                j-=1
            else:
                nums[j+1] = num
                break
        else:
            nums[0] = num

三、选择排序

不断从指针右边的数组中找到最小元素,将最小元素依次放在前面,指针右移,不断循环直到指针指向末尾

def select_sort(nums):
    n = len(nums)
    for i in range(n-1):
        num = nums[i]
        index = i
        for j in range(i,n):
            if nums[j]<num:
                index = j
                num = nums[j]
        nums[index],nums[i] = nums[i],nums[index]

四、归并排序

归并算法的核心思想是分治法,就是将一个数组一刀切两半,递归切,直到切成单个元素,然后重新组装合并,单个元素合并成小数组,两个小数组合并成大数组,直到最终合并完成,排序完毕。

1.归并

将mid分成的两个有序数组合并为一个有序的大数组

def guibing(nums,left,mid,right):
    temp = <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值