Python数据处理之排序


变量交换

方法1:中间变量

【原理】利用中间变量保存其中一个变量的值,使得这个变量被修改后,原来的值不会丢失。

py

height = [20, 10, 30]
#交换两个元素
a = height[0]
height[0] = height[1]
height[1] = a

方法2:单行赋值

【原理】python支持在一行中给多个变量赋值,在等号两边交换变量的顺序,可以交换变量的值。

py

data = [20, 10, 30]
data[0], data[1] = data[1], data[0]

交换列表data的前两个元素

排序概述

生活中,我们离不开排序。比如,我们会按照时间顺序排列课程表; 体育课上,同学们会按照身高排队等等。
在编程的世界中,应用到排序的场景也比比皆是。音乐播放器会按照歌曲的播放次数形成榜单,游戏中,要按照得分的 多少给玩家排名……

数据处理之排序

可以说,排序无处不在。它看似简单,背后却隐藏着多种 多样的算法和思想。

排序算法:冒泡排序,选择排序,插入排序,快速排序。。。。。。

冒泡排序

冒泡排序(bubble sort)是一种基础的排序算法。

冒泡排序思想

从第一位开始,依次比较相邻两个数字的大小,并根据 比较结果,交换两个数字的位置。在这个过程中,每个数字都会像小气泡一样,根据自身 大小,一点一点向序列的一侧移动,所以叫冒泡排序。

样例:使用冒泡排序的方法,让[4,3,5,2,1]按从小到大的 顺序排列,过程是这样的:
第一轮冒泡

py

4 3 5 2 1             //4 > 3 交换
3 4 5 2 1             //4 < 5 不交换
3 4 5 2 1             //5 > 2 交换
3 4 2 5 1             //5 > 1 交换
3 4 2 1 5

一轮冒泡结束,最大的元素移到了最右侧

第二轮冒泡
最大的数字已经排列到了最右侧,使用相同的方法继续对剩余元素排序:

py

3 4 2 1 5              //3 < 4 不交换
3 4 2 1 5              //4 > 2 交换
3 2 4 1 5              //4 > 1 交换
3 2 1 4 5       

第二轮冒泡结束,排好了第二大的元素

第三轮冒泡

py

3 2 1 4 5              //3 > 2 交换
2 3 1 4 5              //3 > 1 交换
2 1 3 4 5

第三轮冒泡结束,排好了三个元素

第四轮冒泡

py
     
2 1 3 4 5              //2 > 1 交换
1 2 3 4 5

第四轮冒泡结束,排好了四个元素,剩下的最后一个元素也随之确定下来,排序结束。

总结
每一轮冒泡排序可以排好一个元素,要排列好所有元素, 需要经过元素个数-1轮冒泡。

冒泡轮数 = 元素个数 – 1

冒泡排序代码

py

for i in range(元素个数-1):                         //控制进行第几轮冒泡排序
    for j in range(元素个数-1-i)                     //比较次数 实现每一轮冒泡处理
        if 列表[j] > 列表[j+1]
            列表[j], 列表[j+1] = 列表[j+1], 列表[j]

使用循环嵌套实现冒泡排序。
外循环:控制进行第几轮冒泡排序,循环次数表示冒泡轮数 内循环:实现每一轮冒泡处理,循环次数表示每一轮的比较次数

sort()

Python中,可以使用sort()对列表进行排序。

使用格式

py

列表.sort()

直接改变列表,默认从小到大排序

py

a = [5, 2, 3, 1, 4]
a.sort()                 //a = [1, 2, 3, 4, 5]

参数reverse

设置参数reverse可以实现从大到小排序。

reverse=False //从小到大排序(默认)
reverse=True //从大到小排序

py

a = [5, 2, 3, 1, 4]
a.sort(reverse=True)      //a = [5, 4, 3, 2, 1]
写于2022年9月10日
没有伞的孩子,必须学会努力奔跑。

赞助 点赞 0 unread messages

暂无评论,抢沙发?

发表回复

您的电子邮箱地址不会被公开。