Python排序算法示例-持续更新学习笔记

算法复杂度

分为时间复杂度、空间复杂度

  • 时间复杂度
    • 在排序之前先要对时间复杂度的概念有一个清晰的认识,它是用来描述算法的运行时间,通常用大O符号表示。
    • 算法中语句被执行的次数越多,需要的时间就越长。算法中语句执行的次数叫语句频度/时间频度,用T(n)表示。
  • 空间复杂度
    • 执行算法需要的内存空间。

冒泡排序

重复的进过要排序的元素,依次比较相邻的两个元素,因为如果元素相同的话就不会交换,所以这种排序属于稳定排序算法。

时间复杂度: n²uploading.4e448015.gif正在上传…重新上传取消uploading.4e448015.gif正在上传…重新上传取消

示例

lista = [3,33,4,12,63,1,55,32,6,7,36]
for j in range(len(lista)):
    print('j: ', j)
    for i in range(0, len(lista)-j-1):
        print('i: ', i)
        if lista[i] > lista[i + 1]:
            print('lista[i],lista[i + 1]: ', lista[i],lista[i + 1])
            lista[i],lista[i + 1] = lista[i + 1],lista[i]
            print(lista)

结果:
D:\>python test.py
j:  0
i:  0
i:  1
lista[i],lista[i + 1]:  33 4
[3, 4, 33, 12, 63, 1, 55, 32, 6, 7, 36]
i:  2
lista[i],lista[i + 1]:  33 12
[3, 4, 12, 33, 63, 1, 55, 32, 6, 7, 36]
i:  3
i:  4
lista[i],lista[i + 1]:  63 1
[3, 4, 12, 33, 1, 63, 55, 32, 6, 7, 36]
i:  5
lista[i],lista[i + 1]:  63 55
[3, 4, 12, 33, 1, 55, 63, 32, 6, 7, 36]
i:  6
lista[i],lista[i + 1]:  63 32
[3, 4, 12, 33, 1, 55, 32, 63, 6, 7, 36]
i:  7
lista[i],lista[i + 1]:  63 6
[3, 4, 12, 33, 1, 55, 32, 6, 63, 7, 36]
i:  8
lista[i],lista[i + 1]:  63 7
[3, 4, 12, 33, 1, 55, 32, 6, 7, 63, 36]
i:  9
lista[i],lista[i + 1]:  63 36
[3, 4, 12, 33, 1, 55, 32, 6, 7, 36, 63]
j:  1
i:  0
i:  1
i:  2
i:  3
lista[i],lista[i + 1]:  33 1
[3, 4, 12, 1, 33, 55, 32, 6, 7, 36, 63]
i:  4
i:  5
lista[i],lista[i + 1]:  55 32
[3, 4, 12, 1, 33, 32, 55, 6, 7, 36, 63]
i:  6
lista[i],lista[i + 1]:  55 6
[3, 4, 12, 1, 33, 32, 6, 55, 7, 36, 63]
i:  7
lista[i],lista[i + 1]:  55 7
[3, 4, 12, 1, 33, 32, 6, 7, 55, 36, 63]
i:  8
lista[i],lista[i + 1]:  55 36
[3, 4, 12, 1, 33, 32, 6, 7, 36, 55, 63]
j:  2
i:  0
i:  1
i:  2
lista[i],lista[i + 1]:  12 1
[3, 4, 1, 12, 33, 32, 6, 7, 36, 55, 63]
i:  3
i:  4
lista[i],lista[i + 1]:  33 32
[3, 4, 1, 12, 32, 33, 6, 7, 36, 55, 63]
i:  5
lista[i],lista[i + 1]:  33 6
[3, 4, 1, 12, 32, 6, 33, 7, 36, 55, 63]
i:  6
lista[i],lista[i + 1]:  33 7
[3, 4, 1, 12, 32, 6, 7, 33, 36, 55, 63]
i:  7
j:  3
i:  0
i:  1
lista[i],lista[i + 1]:  4 1
[3, 1, 4, 12, 32, 6, 7, 33, 36, 55, 63]
i:  2
i:  3
i:  4
lista[i],lista[i + 1]:  32 6
[3, 1, 4, 12, 6, 32, 7, 33, 36, 55, 63]
i:  5
lista[i],lista[i + 1]:  32 7
[3, 1, 4, 12, 6, 7, 32, 33, 36, 55, 63]
i:  6
j:  4
i:  0
lista[i],lista[i + 1]:  3 1
[1, 3, 4, 12, 6, 7, 32, 33, 36, 55, 63]
i:  1
i:  2
i:  3
lista[i],lista[i + 1]:  12 6
[1, 3, 4, 6, 12, 7, 32, 33, 36, 55, 63]
i:  4
lista[i],lista[i + 1]:  12 7
[1, 3, 4, 6, 7, 12, 32, 33, 36, 55, 63]
i:  5
j:  5
i:  0
i:  1
i:  2
i:  3
i:  4
j:  6
i:  0
i:  1
i:  2
i:  3
j:  7
i:  0
i:  1
i:  2
j:  8
i:  0
i:  1
j:  9
i:  0
j:  10

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值