学习日志017--python的几种排序算法

冒泡排序

python 复制代码
def bubble_sort(alist):
    i = 0
    while i<len(alist):
        j=0
        while j<len(alist)-1:
            if alist[j]>alist[j+1]:
                alist[j],alist[j+1] = alist[j+1],alist[j]
            j+=1

        i+=1

l = [2,4,6,8,0,1,3,5,7,9]
bubble_sort(l)
print(l)

选择排序

python 复制代码
def select_sort(alist):
    i = 0
    while i<len(alist)-1:
        temp = i
        j=i+1
        while j<len(alist):
            if alist[temp]>alist[j]:
                temp = j
            j+=1
        if not temp == i:
            alist[i],alist[temp] = alist[temp],alist[i]
        i += 1
l = [6, 4, 5, 3, 8, 9, 2, 1, 7]
select_sort(l)
print(l)

直接排序

python 复制代码
def insert_sort(alist):
    i=1
    while i<len(alist):
        temp = alist[i]
        j = i
        while j>0 and alist[j - 1] > temp:
            alist[j] = alist[j-1]
            j-=1
        alist[j] = temp
        i+=1
l = [2,4,6,8,0,1,3,5,7,9]
insert_sort(l)
print(l)

快速排序

python 复制代码
def part(alist,l,r):
    p = alist[l]

    while l<r:
        while l<r and alist[r]>p:
            r-=1
        alist[l] = alist[r]

        while l<r and alist[l]<p:
            l+=1
        alist[r] = alist[l]
    alist[l] = p

    return l

def quick_sort(alist,l,r):
    if l<r:
        p_index = part(alist, l, r)
        print(alist)
        quick_sort(alist,l,p_index-1)
        quick_sort(alist,p_index+1,r)

l = [6, 4, 5, 3, 8, 9, 2, 1, 7]
n = len(l)-1
quick_sort(l,0,n)
print(l)

希尔排序

python 复制代码
def shell_sort(alist):
    n = len(alist)
    gap = n//2
    while gap>0:
        for i in range(gap,n):
            temp = alist[i]
            j = i
            while alist[j-gap] > temp and j >= gap:
                alist[j] = alist[j-gap]
                j -= gap
            alist[j] = temp

        gap = gap // 2
    return arr

arr = [6, 4, 5, 3, 8, 9, 2, 1, 7]
print("排序前:", arr)
sorted_arr = shell_sort(arr)
print("排序后:", sorted_arr)

xmind

相关推荐
线上放牧人3 分钟前
Windows删除图标缓存
windows·python·pyqt
qq_54702617931 分钟前
Python 变量和简单数据类型
python
小弥儿2 小时前
GitHub今日热榜 | 2026-09-18:腾讯双项目上榜
学习·开源
智搜广告2 小时前
智搜广告:科技行业AI回答优化公司如何破局
大数据·python·elasticsearch·geo
IpdataCloud2 小时前
AI智能体调用工具怎么核验来源IP?归属地、网络类型与代理风险识别(含Python代码)
数据库·python·tcp/ip
2601_966949653 小时前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
蒸鱼Yuzheng3 小时前
Python 游戏测试开发怎么准备:日志解析、接口校验、并发与可维护性
自动化测试·python·测试开发·面试题·游戏测试
Ivanqhz3 小时前
BM1688 双核架构
python·深度学习·神经网络·cnn·mlir
Java后端的Ai之路3 小时前
Python进阶探索17 - Python中的深拷贝与浅拷贝
人工智能·python·ai·浅拷贝·深拷贝
知识分享小能手4 小时前
深度学习学习教程,从入门到精通,深度生成模型 —— 知识点详解与代码实现(20)
人工智能·深度学习·学习