【python练习】三种排序算法

复制代码
排序算法
Description

试用选择算法或冒泡算法或快速排序算法对一列数进行升序排列。

如:

9 9 1 4 10 2 1 8 7 4

排列后为:

1 1 2 4 4 7 8 9 9 10


Input
一列若干个整数


Output
排序后的一列整数


Sample Input 1 

9 9 1 4 10 2 1 8 7 4
Sample Output 1

1 1 2 4 4 7 8 9 9 10
Hint

本题主要练习各种排序算法。如果只是为了AC,当然只用内置sorted函数即可。

Source

中学生可以这样学Python,P190-P193例8-21,例8-22,例8-23

冒泡排序

复制代码
#冒泡排序,每个元素,都跟相邻元素比大小,一直比到最后一个
a=list(map(int,input().split()))
for i in range(len(a)-1):
    #print(a[i])
    for j in range(i+1,len(a)):
        if a[i]>a[j]:
            a[i],a[j]=a[j],a[i]
print(*a)

测试时候有两个节点超时

选择排序

复制代码
#选择排序,每次扫描剩余数中最大值或最小值与当前位置数交换
a=list(map(int,input().split()))
for i in range(len(a)-1):
    small=min(a[i+1:])
    index=a[i+1:].index(small)+i+1
    if a[i]>a[index]:
        a[i],a[index]=a[index],a[i]
print(*a)

a=list(map(int,input().split()))
for i in range(len(a)-1):
    k=i
    for j in range(i+1,len(a)):
        if a[j]<a[k]:
            k=j
    if i!=k:
        a[i],a[k]=a[k],a[i]
print(a)

测试时候有两个节点超时

快速排序

复制代码
a=list(map(int,input().split()))

def kuaisu(a,l,r):
    if l>=r:
        return
    i=l
    j=r
    p=a[l]
    while i<j:
        while i<j and a[j]>=p:
            j=j-1
        a[i]=a[j]
        while i<j and a[i]<=p:
            i=i+1
        a[j]=a[i]
        #a[i],a[j]=a[j],a[i]
    a[i]=p
    kuaisu(a,l,i-1)
    kuaisu(a,i+1,r)
kuaisu(a,0,len(a)-1)
print(*a)

上面仿照书本上的快速排序,但没太看懂,根据这个视频【Python小知识】星途文化_python19:快速排序的概念和实现学了一个不太一样的,迷惑

复制代码
#快速排序,每次选一个数,以此为分界点将元素分成两部分,前面的比该元素小,后面的比该元素大,重复,直到排好
a=list(map(int,input().split()))
def kuaisu(alist):
    if len(alist)<=1:
        return alist
    p=alist[len(alist)//2]
    left=[x for x in alist if x<p]
    mid=[x for x in alist if x==p]
    right=[x for x in alist if x>p]
    return kuaisu(left)+mid+kuaisu(right)
print(*kuaisu(a))

通过测试

相关推荐
Lupino14 分钟前
别再只聊 AI 写代码了:技术负责人要把“变更治理”提到第一优先级
python·docker·容器
Flittly2 小时前
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(6)Context Compact (上下文压缩)
python·agent
曲幽13 小时前
FastAPI + PostgreSQL 实战:从入门到不踩坑,一次讲透
python·sql·postgresql·fastapi·web·postgres·db·asyncpg
用户83562907805117 小时前
使用 C# 在 Excel 中创建数据透视表
后端·python
码路飞20 小时前
FastMCP 实战:一个 .py 文件,给 Claude Code 装上 3 个超实用工具
python·ai编程·mcp
dev派1 天前
AI Agent 系统中的常用 Workflow 模式(2) Evaluator-Optimizer模式
python·langchain
前端付豪1 天前
AI 数学辅导老师项目构想和初始化
前端·后端·python
用户0332126663671 天前
将 PDF 文档转换为图片【Python 教程】
python
悟空爬虫1 天前
UV实战教程,我啥要从Anaconda切换到uv来管理包?
python
dev派1 天前
AI Agent 系统中的常用 Workflow 模式(1)
python·langchain