首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >python: 经典排序 汇总

python: 经典排序 汇总

作者头像
JNingWei
发布于 2019-02-25 16:22:41
发布于 2019-02-25 16:22:41
6840
举报
文章被收录于专栏:JNing的专栏JNing的专栏

冒泡排序

代码语言:javascript
复制
def bubble_sort(x):
    for i in range(len(x)):
        for j in range(1, len(x)-i):
            if x[j-1] > x[j]:
                x[j-1], x[j] = x[j], x[j-1]
    return x

插入排序

代码语言:javascript
复制
def insert_sort(x):
    for i in range(len(x)):
        for j in range(i):
            if x[i] < x[j]:
                tmp = x[i]
                for p in range(i, j, -1):
                    x[p] = x[p-1]
                x[j] = tmp
    return x

选择排序

代码语言:javascript
复制
def select_sort(x):
    for i in range(len(x)):
        for j in range(i+1, len(x)):
            if x[i] > x[j]:
                x[i], x[j] = x[j], x[i]
    return x

归并排序

代码语言:javascript
复制
def merge(left, right):
    i, j, res = 0, 0, []
    while i < len(left) and j < len(right):
        if left[i] <= right[j]:
            res.append(left[i])
            i += 1
        else:
            res.append(right[j])
            j += 1
    res += left[i:] or right[j:]
    return res
def merge_sort(x):
    if len(x) <= 1:
        return x
    mid = len(x) // 2
    left = merge_sort(x[:mid])
    right = merge_sort(x[mid:])
    return merge(left, right)

快速排序

代码语言:javascript
复制
def quick_sort(x, low, high):
    if low >= high:
        return x
    base, left, right = x[low], low, high
    while left < right:
        while left < right and x[right] >= base:
            right -= 1
        x[left] = x[right]
        while left < right and x[left] <= base:
            left += 1
        x[right] = x[left]
    x[left] = base
    quick_sort(x, low, left-1)
    quick_sort(x, left+1, high)
    return x
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年11月08日,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 冒泡排序
  • 插入排序
  • 选择排序
  • 归并排序
  • 快速排序
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档