Python 常见排序算法及原理

本文介绍了Python中常见的几种排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、归并排序和快速排序的工作原理及过程。通过示例详细解析了每种排序算法的实现方式和效率特点。
摘要由CSDN通过智能技术生成

声明:此文参考自 https://facert.gitbooks.io/python-data-structure-cn

一、冒泡排序

冒泡排序需要多次遍历列表。它比较相邻的项并交换那些无序的项。每次遍历列表将下一个最大的值放在其正确的位置。实质上,每个项“冒泡”到它所属的位置。

下图展示了冒泡排序的第一次遍历。阴影项正在比较它们是否乱序。如果在列表中有 n 个项目,则第一遍有 n-1 个项需要比较。重要的是要注意,一旦列表中的最大值是一个对的一部分,它将不断地被移动,直到遍历完成。


def bubble_sort(arr):
    count = len(arr)
    for i in range(count):
        for j in range(count - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j+1], arr[j] = arr[j], arr[j+1]
    print arr
    return arr

二、选择排序

选择排序改进了冒泡排序,每次遍历列表只做一次交换。为了做到这一点,一个选择排序在他遍历时寻找最大的值,并在完成遍历后,将其放置在正确的位置。与冒泡排序一样,在第一次遍历后,最大的项在正确的地方。 第二遍后,下一个最大的就位。遍历 n-1 次排序 n 个项,因为最终项必须在第(n-1)次遍历之后。


def selection_sort(arr):
    count = len(arr)
    # max_position = 0
    for i in range(count):
        max_position = 0
        for location in range(count - i - 1, 0, -1):
            if arr[location] > arr[max_position]:
                max_position 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值