12. python冒泡排序和选择排序

本文介绍了如何使用冒泡排序和选择排序两种基本算法对从键盘输入的整数进行排序,并详细解释了这两种算法的实现过程及时间复杂度,通过实例演示了排序效果。
部署运行你感兴趣的模型镜像

从键盘接收若干个整数(直接输入回车表示结束),用冒泡法选择法进行排序(从小到大),并将排序结果在屏幕上输出。同时估计算法的复杂度。

一、思路:

1. 冒泡法:重复地走访要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误,就把他们交换过来。重复直到没有相邻元素交换,则表示排序完成。

2. 选择法: 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

上述两个程序算法的时间复杂度均为 O(n2).

二、代码:

1. 冒泡:

def bubble(List):
    for i in range(0, len(List)-1):
        for j in range(len(List)-1, i, -1):  # 很少用第3个参数,默认步长为-1
            if List[j-1] > List[j]:  # 基于上面-1,所以是倒过来从倒数第一和倒数第二开始比较
                List[j-1], List[j] = List[j], List[j-1]  # 不倒过来比较的话,首尾的数字没办法比较
    return List
L1 = []
num_str = input(' 请输入一个需排序的整数(不输入直接回车则结束): ')
while len(num_str) != 0:
    L1.append(int(num_str))
    num_str = input(' 请输入一个需排序的整数(不输入直接回车则结束): ')
print(' 排序前结果 :', L1)
print(' 排序后结果 :', bubble(L1))

 

2. 选择:

def bubble(List):
    num = len(List)
    for i in range(0, num):   # 核心
        for j in range(i+1, num):  # 核心
            if List[i] > List[j]:
                List[i], List[j] = List[j], List[i]
    return List
L1 = []
digit = input('请输入一个需排序的整数(不输入按回车即可退出):')
while len(digit) != 0:
        L1.append(int(digit))
        digit = input('请输入一个需排序的整数(不输入按回车即可退出):')
print('排序前', L1)
print('排序后', bubble(L1))

 

三、输出:

请输入一个需排序的整数(不输入按回车即可退出):3
请输入一个需排序的整数(不输入按回车即可退出):2
请输入一个需排序的整数(不输入按回车即可退出):1
请输入一个需排序的整数(不输入按回车即可退出):
排序前 [3, 2, 1]
排序后 [1, 2, 3]

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值