Python算法编写

本文介绍了Python中如何实现冒泡排序算法,该算法通过多次比较来达到排序的目的,适合初学者理解掌握。

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

1.1冒泡排序(ps:比较次数较多)

a=[5,2,7,4,3,6,8,0,1,9]
for i in range(len(a)-1):
    for s in range(len(a)-i-1):
        if a[s] < a[s+1]:
            temp=a[s]
            a[s]=a[s+1]
            a[s+1]=temp
print(a)

1.2冒泡排序(ps:比较次数较少)

a=[5,2,7,4,3,6,8,0,1,9]
for i in range(len(a)-1):
    min=0
    for s in range(len(a)-i-1):
        if a[min] > a[s+1]:
            min=s+1
        temp=a[min]
        a[min]=a[len(a)-i-1]
        a[len(a)-i-1]=temp
print(a)


1.3冒泡排序(ps:比较次数更少)

a=[5,2,7,4,3,6,8,0,1,9]
for i in range(len(a)-1):
    min=0
    for s in range(len(a)-1-i):
        if a[min] > a[s+1]:
            min=s+1
    if a[min] != a[len(a)-1-i]:
        temp=a[min]
        a[min]=a[len(a)-i-1]
        a[len(a)-1-i]=temp
print(a)


2. 快速排序(ps:快速排序是对冒泡排序的升级,  快速排序更适合与对随机数的排序)

a=[9,2,7,4,3,6,5,8,1]
def quickScore(a,start,end):
    temp=a[start]
    for i in range(start+1,end):
        if temp > a[i] :
            temp2=a[i]
            for n in reversed(range(start,i)):
                a[n+1]=a[n]
            a[start]=temp2
    index=a.index(temp)
    if index - start > 1 :
        quickScore(a,start,index)
    if end-1 - index > 1 :
        quickScore(a,index+1,end)
quickScore(a,0,9)
print(a)


3.1插入排序--直接插入排序

编写思想以及步骤如下:

1.要排序的数组a=[9,2,7,4,3,6,5,8,1]2.定义一个指明已完成排序的指针,point=1
while point<len(a):
3.取出 point 指明的数字  temp=a=[point]
4.定义数字插入的位置   index=-1
5.通过循环判定具体位置
   for i in range(point):
       if temp < a[i]:
           index=i
           break
6.通过判断index是否为-1判定待插入数字是否需要插入
   if index != -1:
       for i in reversed(range(index,point)):
           a[i+1]=a[i]
       a[index]=point
   point+=1
print(a)
a=[9,2,7,4,3,6,5,8,1]
bijiao=0
jiaohuan=0
point=1
while point<len(a):
    temp=a[point]
    index=-1
    for i in range(point):
        bijiao+=1
        if temp<a[i]:
            index=i
            break
    if index !=-1:
        for i in reversed(range(index,point)):
            a[i+1]=a[i]
            jiaohuan+=1
        a[index]=temp
    point+=1
print(a)
print('比较次数:'+str(bijiao))
print('交换次数:'+str(jiaohuan))

3.2插入排序--希尔排序(ps:减半思想,希尔排序是在直接插入排序的基础上延伸而来)

a=[9,2,7,4,3,6,5,8,1]
bijiao=0
jiaohuan=0
dk=len(a)
while True:
    dk=dk//2   #len(a)//2    两个斜杠:表示取整数
    for n in range(dk):
        point=dk+n
        while point<len(a):
            temp=a[point]
            index=-1
            for i in range(n,point,dk):
                bijiao+=1
                if temp<a[i]:
                    index=i
                    break
            if index !=-1:
                for i in reversed(range(index,point,dk)):
                    a[i+dk]=a[i]
                    jiaohuan+=1
                a[index]=temp
            point+=dk
    if dk == 1:
        break
print(a)
print('比较次数:'+str(bijiao))
print('交换次数:'+str(jiaohuan))





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值