用python实现各种排序

从简单到复杂大致排序

1. 内置排序函数(不要太简单好吗)

nums.sort()  # 原地排序,不反回
sorted(nums) # 返回排序后的数组

2. 冒泡排序(排序的helloword)

def bubbleSort(nums):
    for i in range(len(nums))[::-1]:
        for j in range(i+1, len(nums)):
            if nums[j] < nums[j-1]:
                nums[j], nums[j-1] = nums[j-1], nums[j]

3.插入排序(静静躺着,期待下面大佬的表演)

def insertSort(nums):
    snums = []
    for i, num in enumerate(nums):
        j = i
        while j - 1 >= 0 and snums[j-1] > num:
            j -= 1
        snums.insert(j, num)
    return snums

4.归并排序(用上递归了!)

def mergeSort(nums):
    if len(nums) < 2:
        return nums
    mid = len(nums)//2
    l = mergeSort(nums[:mid])
    r = mergeSort(nums[mid:])
    for i in range(len(nums)):
        if not r or l[0] < r[0]:
            nums[i] = l.pop(0)
        else:
            nums[i] = r.pop(0)
    return nums

5.shell排序(插入排序?Nope)

def shellSort(nums):
    gap = len(nums)//2
    while gap:
        for i in range(gap, len(nums)):
            b = nums[i]
            j = i
            while j >= gap and nums[j-gap] > b:
                nums[j] = nums[j-gap]
                j -= gap
            nums[j] = b
        gap = gap // 2
    return nums

6.快速排序(我可有点难理解哟)

def quickSort(nums):
    def rsort(lo, hi):
        if lo >= hi:
            return
        i = lo
        for j in range(lo, hi):
            if nums[j] < nums[hi]:
                nums[i], nums[j] = nums[j], nums[i]
                i += 1
        nums[i], nums[hi] = nums[hi], nums[i]
        rsort(lo, i-1)
        rsort(i+1, hi)
    rsort(0, len(nums-1))
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.冒泡排序 比较相邻的元素大小,将小的前移,大的后移,就像水中的气泡一样,最小的元素经过几次移动,会最终浮到水面...
    非典型程序员00阅读 3,669评论 1 36
  • 话不多数,先上两张图: 名词解释: n:数据规模k:“桶”的个数In-place:占用常数内存,不占用额外内存Ou...
    牛奶芝麻阅读 35,673评论 6 44
  • 一. 写在前面 要学习算法,“排序”是一个回避不了的重要话题,在分析完并查集算法和常用数据结构之后,今天我们终于可...
    Leesper阅读 2,560评论 0 40
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,235评论 0 52
  • 姓名:杨莹莹 公司:四川鸿吉商贸 第333期乐观二组学员 第354期利他一组志工 【日精进打卡第252天】 【知~...
    杨莹莹siya阅读 48评论 0 0