频道栏目
首页 > 程序开发 > Web开发 > Python > 正文
python:4种基本排序算法
2018-03-13 13:57:38      个评论    来源:小沫_jie的博客  
收藏   我要投稿

1.冒泡排序

# -*- coding:utf-8 -*-


def bubble_sort(A):
    for i in range(len(A)-1):  # 决定进行的轮数
        for j in range(0, len(A)-i-1):  # 列表下标
            if A[j] > A[j+1]:
                A[j+1], A[j] = A[j], A[j+1]
    return A


A = [0, 5, 4, 3, 2, 1]
print(bubble_sort(A))

2.快速排序

# -*- coding:utf-8 -*-


def partition(A, low, high):
    pivot = A[low]
    while low < high:
        while low < high and A[high] >= pivot:
            high -= 1
        A[low] = A[high]
        while low < high and A[low] <= pivot:
            low += 1
        A[high] = A[low]
    A[low] = pivot
    return low


def quick_sort(A, low, high):
    if low < high:
        pivot = partition(A, low, high)
        print(A, low, high)
        quick_sort(A, low, pivot-1)
        quick_sort(A, pivot+1, high)
    return A


A = [3, 5, 4, 8, 2, 1]
print(quick_sort(A, 0, 5))

3.归并排序

# -*- coding:utf-8 -*-


def merge_sort(A):
    if len(A) == 1:
        return A
    mid = len(A)//2
    left = merge_sort(A[:mid])
    right = merge_sort(A[mid:])

    return merge(left, right)


def merge(left, right):
    result = []
    while len(left) > 0 and len(right) > 0:
        if left[0] < right[0]:
            result.append(left.pop(0))
        else:
            result.append(right.pop(0))
    result += left
    result += right
    return  result


A = [3, 5, 4, 8, 2, 1]
print(merge_sort(A))

4. 插入排序

# -*- coding:utf-8 -*-


def insert_sort(A):
    for i in range(1, len(A)):
        j = i-1
        if A[i] < A[j]:
            temp = A[i]
            A[i] = A[j]
            j = j-1
            while j >= 0 and A[j] > temp:
                A[j+1] = A[j]
                j -= 1
            A[j+1] = temp
    return A


A = [3, 5, 4, 8, 2, 1]
print(insert_sort(A))
点击复制链接 与好友分享!回本站首页
上一篇:Python如何提取APK图标
下一篇:分享3道关于面试中会遇到的python的编程题,附题解
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站