排序(冒泡、插入)

1、冒泡排序

在数组x[n]中,从第一个数开始,拿x[i]和后面的数x[i+1]进行比较,如果x[i]比后面的大,就交换两个数的位置,这样遍历一遍数组后,把最大的数据排在了最后面,之后继续循环排剩下的n-1个数,直到完成所有的排序,由于每次都是把最大的排到最后面,就好像冒泡一样,故取名冒泡排序。

# 时间复杂度O(n²)
def bubblesort(listx):
    Lx=len(listx)
    for i in range(Lx-1): #遍历n-1遍
        for j in range(Lx-1-i): #每次遍历交换n-1-i次
            if listx[j]>listx[j+1]:
                listx[j],listx[j+1]=listx[j+1],listx[j]  #两个数交换
    return listx


if __name__ =='__main__':
    lista=[5,8,3,0,6]
    print(bubblesort(lista))

2、插入排序

将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数。

# 时间复杂度O(n²)
def insertsort(listx):
    Lx=len(listx)
    print(Lx)
    for i in range(1,Lx): #遍历n-1遍
        j=i-1
        while j>=0:
            if listx[j]>listx[j+1]:
                listx[j],listx[j+1]=listx[j+1],listx[j]
                j-=1
                print(j)
            else:
                break
    return listx

if __name__ =='__main__':
    lista=[1,9,5,8,3,0,6]
    print(insertsort(lista))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值