python实现经典排序算法

本文详细介绍了如何用Python编程语言实现冒泡排序、插入排序和快速排序这三种经典的排序算法,并提供了相应的代码示例及测试列表应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:分别实现冒泡排序,插入排序,快速排序的算法,并使用列表测试


#冒泡排序实现
def bubbleSort(data):
        if len(data) < 2: return data
        for i in range(0, len(data)-1):
                m = i
                for j in range(i+1, len(data)):
                        if data[m] > data[j]: m =j

                if m != i:
                        #不使用中间元素,下面语句直接完成两个数组元素交换
                        data[i], data[m] = data[m], data[i]
        return data

#插入排序实现
def insertSort(data):
    if len(data) < 2: return data
    for i in range(1,len(data)):
        key = data[i]
        j = i-1
        while j >= 0 and key < data[j]:
            data[j+1] = data[j]
            j = j-1
        data[j+1]= key
    return data


#快速排序实现
def partition(data, p, r):
    i = p-1
    cmp = data[r]
    for j in range(p,r):
        if data[j] < cmp:
            i = i+1
            if i <> j: data[i],data[j] = data[j],data[i]

    if (i+1) <> r: data[i+1],data[r] = data[r],data[i+1]
    return i+1
def randomPartition(data, p, r):
    import random
    i = random.randint(p,r)
    data[i], data[r] = data[r], data[i]
    return partition(data, p, r)

def quickSort(data, p, r):
    if p < r:
        #q = partition(data, p, r)   
        q = randomPartition(data, p, r)
        quickSort(data, p, q-1)
        quickSort(data, q+1, r)

#归并排序
from heapq import merge
def merge_sort(m):
    if len(m) <= 1:
        return m

    middle = len(m) /2
    left = m[:middle]
    right = m[middle:]

    left = merge_sort(left)
    right = merge_sort(right)
    return list(merge(left, right)

#创建一个100个元素的数组,每次用shuffle打乱之后再排序
from random import shuffle,sample

numbers = sample(range(10),9)

shuffle(numbers)
print numbers
print 'after sorted:'
insertSort(numbers)
print numbers

shuffle(numbers)
print numbers
print 'after sorted:'
bubbleSort(numbers)
print numbers

shuffle(numbers)
print numbers
print 'after sorted:'
quickSort(numbers,0,len(numbers)-1)
print numbers

shuffle(numbers)
print numbers
print 'after sorted:'
numbers = merge_sort(numbers)
print numbers

运行截图如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值