python中的冒泡排序和选择排序简析

写这篇文章就是为了区别冒泡排序和选择排序,
同时解决最近发现的一个灵活运用的问题(我会在下一篇博客中解答)
#冒泡排序:从左到右,取相邻的两个元素进行比较,将较大的放到后面,依次向后排列。
如下图(下面都默认为升序排列):
在这里插入图片描述

list_a = [2, 6, 5, 3, 1]
for i in range(len(list_a) - 1):  # 外层循环控制圈数
    for j in range(len(list_a) - 1 - i):
        # 不合适,就交换数据
        # 此处是升序排序,若想降序需要将 > 改为 <
        if list_a[j] > list_a[j + 1]:
            list_a[j], list_a[j + 1] = list_a[j + 1], list_a[j]
print(list_a)
[1, 2, 3, 5, 6]

选择排序:取出第一个元素,依次与后面的元素进行比较,不合适交换位置,直至比较结束,一轮可以确定开头一个。每轮确定一个元素,依次向后,n个元素需要n-1轮比较
在这里插入图片描述
(第一轮实际只确定了第一个值为1)

list_a = [2, 6, 5, 3, 1]
def change(args):
    for i in range(0, len(list_a) - 1):
        for v in range(i + 1, len(list_a)):
            if list_a[i] < list_a[v]:
                list_a[i], list_a[v] = list_a[v], list_a[i]
    return list_a

print(change(list_a)
>>>>[6, 5, 3, 2, 1]

问题如下:
己知罗志祥每晚都要约好几个女生到酒店房间。每个女生i与罗志祥约好的时间由[s_ i,e_ i]表示,其中s_ i表示女生进入房间的时间,e_ i表示女生离开房间的时间。由于罗志祥心胸开阔,思想开明,不同女生可以同时存在于罗志祥的房间。请计算出罗志祥最多同时在做几人的「多人运动」。
例子:
Input: [[O, 30], [5, 10], [15, 20]]
Output:最多同时有两个女生的「三人运动」
(蹭了一波热点,其实不用在意,还是要透过现象看下问题本质)


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值