首页 > 科技 > Python 算法 04-- 选择排序的奥秘

Python 算法 04-- 选择排序的奥秘


寒假来了,小学生领到本学期的学习成果 -- 成绩单

你家宝贝获得奖状没? (单选)
0
0%
A.必须滴
0
0%
B.再接再厉,明年加油
投票

假设你是班主任,记录了每位同学的总成绩


成绩表

你需要将成绩表按总分从多到少顺序排列。该如何做呢?


● 遍历成绩表,找出总分最高的同学,并将同学添加到一个新列表中

第一次遍历

● 排除总分第一的同学后,再次遍历成绩表,找出剩下总分最高的同学

● 按照这个逻辑继续,将得到一个有序列表


● 选择排序的时间复杂度

要找出分数最高的同学,必须检查列表中的每个同学。

需要的时间为O(n)

这里我们要注意下,每一次检查的元素在减少,最后一次检查的元素只有一个,之所以运行时间还是用O(n)表示,在正无穷下,平均检查的元素个数为 n

需要执行 n 次

>>> 故需要的总时间为:

O(n^2)


Python 代码实现

● Python 代码思路:

① 定义一个函数,找出原列表中值最大的索引值(下角标)

② 将找出的最大值添加到新列表中,并根据索引值删除原列表中的元素

● Python 代码:


>>>Python 算法 03-- 数组和链表(下)

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/286937.html