Python的基本排序算法

x=[5,21,54,4,6,34,56,34,43,63,9]
1.冒泡排序

def bubble_sort(x):
    for i in range(len(x)-1):
        for j in range(len(x)-i-1):
            if x[j]>x[j+1]:
                x[j],x[j+1]=x[j+1],x[j]
y=x[::]
print('y:',y)
bubble_sort(y)
print('排序后y:',y)

运行结果:
在这里插入图片描述
2.选择排序

def select_sort(x):
    for i in reange(len(x)-1):
        index=i
        for j in range(i+1,len(x)):
            if x[index]>x[j]
                index=j
             x[index],x[i]=x[i],x[index]
y=x[::]
select_sort(y)
print(y)

在这里插入图片描述
3.插入排序

def insert_sort(x):
    for i in range(1,len(x)):
        for j in range(i,0,-1):
            if x[j]<x[j-1]:
                y[j],y[j-1]=y[j-1],y[j]
y=x[::]
insert_sort(y)
print(y)

在这里插入图片描述
改进以上插入排序算法,减少交换次数

def insert1_sort(x):
    for i in range(1,len(x)):
        temp=y[i]
        j=i
        while j>0 and y[j-1]>temp:
             y[j]=y[j-1]
             j=j-1
           y[j]=temp
y=x[::]
insert1_sort(y)
print(y)     

在这里插入图片描述
4.shell排序

def shell_sort(x):
    n=len(x)
    dk=n//2  # 间隔
    while dk>=1:
         shell_insert_sort(x,dk)
         dk=dk//2
  
 def shell_insert_sort(x,dk):
     n=len(x)
     for k in range(dk):
        for i in range(k+dk,n,dk):
            temp=y[i]
            j=i-dk
            while j>=k and y[j]>temp:
                y[j+dk]=y[j]
                j=j-dk
            y[j+dk]=temp
y=x[::]
print(y)
shell_sort(y)
print(y)              

在这里插入图片描述
5.快速排序

def quick_sort(y):
    if len(y)<2:
        return y
    else:
        baseValue=y[0]
        smaller=[s for s in y[1:] if s<baseValue]
        bigger=[b for b in y[1:] if b>baseValue]
        equal=[e for e in y if e==baseValue]
        return quick_sort(smaller)+equal+quick_sort(bigger)
y=x[::]
print(y)
print(quick_sort(y))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值