Python基础教程

第一章: 环境搭建,安装Python

第二章: 挑选一款趁手的IDE

第三章: 计算机基础知识

第四章: 命令行基础知识

第五章: 从全局把握Python

第六章: Python语言基础

第七章: Python流程控制

第八章: Python数据类型与运算

第九章: Python字符串类型

第十章: Python列表类型

第十一章: Python元组类型

第十二章: Python字典类型

第十三章: Python集合类型

第十四章: Python函数处理

第十五章: Python文件处理

第十六章: Python面向对象

第十七章: Python异常处理

第十八章: Python模块处理

第十九章: Python高级编程

第二十章: Python项目实战

首页 > Python基础教程 > 第十一章: Python元组类型 > 11.5节: 程序实战-选择排序算法

11.5节: 程序实战-选择排序算法

薯条老师 2022-12-01 14:25:15 25455 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

11.5.1 排序算法简介

所谓排序,是指将数据集合中的元素按从小到大的顺序进行排列,或按从大到小的顺序进行排列。前者称为升序排序,后者称为降序排序。在数据结构与算法这门课程中,我们会学习到诸多与排序相关的算法,比如冒泡排序算法,选择排序算法,快速排序算法,堆排序算法等。在本节教程中,我们来掌握非常经典的选择排序算法。

11.5.2 选择排序算法

选择排序的核心思想: 从数据集合中选出最小(大)的一个元素,存放在区间的起始位置,再从剩余的未排序元素中寻找到最小(大)的元素,放到已排序的区间的末尾,不断重复这样的过程,直至实现排序。下图所示为将最小值1选择到区间首部的过程:

image.png

(1) 初始情况下假定最小值为3,最小值索引为0

(2) 将元素3与元素2进行比较,2比3小,更新最小值索引为元素2的索引1

(3) 将索引1对应的元素2与末尾的1进行比较,1比2小,更新最小值索引为元素1的索引2

(4) 最小值索引2不等于初始的最小值索引0,故将元素3与1进行互换。

根据以上原理,我们现在使用Python语言来实现选择排序算法:

"""
@author: 薯条老师
@desc: 实现选择排序算法
"""

numbers = [3, 2, 1]
n = len(numbers)

# n个元素需要选择n-1趟才能实现排序,所以是n-1
for outer_index in range(n-1):
    # 先假定outer_index索引指向的元素为最小值
    min_index = outer_index
    # 每次用当前元素与剩下的所有元素进行比较,所以是[outer_index+1, n)
    for inner_index in range(outer_index+1, n):
        if numbers[inner_index] < numbers[min_index]:
            # 在比较的过程中,一旦发现元素值比min_index指向的元素还小,就更新索引
            min_index = inner_index
            
    # 循环结束后判断min_index是否等于一开始赋值的outer_index
    if min_index != outer_index:
        """
        如果min_index非等于outer_index, 就说明剩余的元素中有比一开始假定的最小值还小
        此时,就应该互换位置。此即选择排序的核心,选择一个最大的或最小的,然后互换位置
        """
        numbers[outer_index], numbers[min_index] = \
            numbers[min_index], numbers[outer_index]
        
print(numbers)

11.5.3 最具实力的小班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取Python学习资料:





欢迎 发表评论: