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开发、数据分析、人工智能和自动化脚本

冒泡排序选择排序都是常见的排序算法,下面分别介绍一下它们的工作原理实现。 冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻的两个元素并将它们按照大小顺序进行交换,直到整个列表排序完成。 冒泡排序的步骤如下: 1. 从第一个元素开始,比较相邻的两个元素。 2. 如果顺序不正确,则交换它们的位置。 3. 继续比较下一对相邻元素,直到比较完所有元素。 4. 如果还有任何交换操作发生,则重复前面的步骤。 以下是用 Python 实现冒泡排序的代码: ```python def bubble_sort(arr): n = len(arr) for i in range(n): # 每次遍历会将最大的元素冒泡到最后 for j in range(0, n-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] return arr ``` 选择排序(Selection Sort)也是一种简单的排序算法,它每次从未排序的部分中选择最小的元素,并将其放置在已排序部分的末尾。 选择排序的步骤如下: 1. 找到未排序部分中的最小元素。 2. 将最小元素与未排序部分的第一个元素交换位置。 3. 将已排序部分的长度加1。 4. 重复上述步骤,直到整个列表排序完成。 以下是用 Python 实现选择排序的代码: ```python def selection_sort(arr): n = len(arr) for i in range(n): min_index = i # 找到未排序部分的最小元素 for j in range(i+1, n): if arr[j] < arr[min_index]: min_index = j # 将最小元素与未排序部分的第一个元素交换位置 arr[i], arr[min_index] = arr[min_index], arr[i] return arr ``` 希望对你有所帮助!如果还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值