Python排序算法

冒泡排序

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


arr = [12, 11, 13, 5, 6]
bubbleSort(arr)
print("排序后的数组:")
for i in range(len(arr)):
    print("%d" % arr[i])

插入排序

def insertionSort(arr):
    for i in range(1, len(arr)):
        j = i - 1
        key = arr[i]
        while j >= 0 and key > arr[j]:
            arr[j + 1] = arr[j]
            j -= 1
        arr[j + 1] = key


arr = [12, 11, 6, 5, 13]
insertionSort(arr)
print("排序后的数组:")
for i in range(len(arr)):
    print("%d" % arr[i])

选择排序

def choseSort(arr):
    for i in range(len(arr)):
        key = i
        for j in range(i+1, len(arr)):
            if arr[j] > arr[key]:
                key = j
        arr[key], arr[i] = arr[i], arr[key]


arr = [12, 11, 13, 5, 6]
choseSort(arr)
print("排序后的数组:")
for i in range(len(arr)):
    print("%d" % arr[i])

希尔排序

import math


def shellsSort(arr):
    length = len(arr)  # 获取数组长度
    gap = 1  # 将数组分割成gap个区间
    while (gap < length / 3):  # 动态规划gap的数量  数学认为length / 3 + 1 效率最高
        gap = gap * 3 + 1
    while gap > 0:  # 当gap区间大于0就一直循环排序
        for i in range(gap, length):  # 从gap开始到length
            temp = arr[i]  # 建立一个存储arr[gap]到arr[length]的缓存区,用于交换值
            j = i - gap  # j为区间的首个值的索引
            while j >= 0 and arr[j] > temp:  # 当j这个索引为正,并且当它大于缓存区的值时开始交换
                arr[j + gap] = arr[j]  # 交换值
                j -= gap  # 如果j减去gap还有值,就让这个值和temp再比较一次
            arr[j + gap] = temp  # 最后将缓存值赋值给arr[j+gap]  #因为j循环后多减去一次gap
        gap = math.floor(gap / 3)
    return arr


arr = [12, 11, 15, 7, 5, 6, 8, 1, 2, 3, 14, 4, 9, 10, 13]
shellsSort(arr)
print("排序后的数组:")
for i in range(len(arr)):
    print("%d" % arr[i])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值