[Python3算法(3)] 选择排序算法[TZZ]
1、启动PyCharm软件,新建一个名为“AlgorithmDemo3”的“Pure Python项目”。然后向项目中添加一个名为“main”的Python文件(具体步骤请参考引用教程);
2、根据选择排序算法的描述可知,该算法实际可以分为两部分,即查找从列表中查找最大值/最小撕良滤儆值和构建新的列表。因此,可以在“main.py”文件中定义一个“find_max_elem”函数,专门秽煅笛琐负责从列表中弹出最大值元素并返回。同样的,也可以定义一个“find_min_elem”函数,专门负责从列表中弹出最小值元素并返回;
![[Python3算法(3)] 选择排序算法[TZZ]](https://exp-picture.cdn.bcebos.com/4b626771fe1d96d88e2bfe952ccd0c6efaf2e18b.jpg)
![[Python3算法(3)] 选择排序算法[TZZ]](https://exp-picture.cdn.bcebos.com/7830e01d96d81819f6123878876efbf203b3de8b.jpg)
3、继续在“main.py”中定义并实现一个“select_sort函数”,该函数需要传入一个列表和一个指示升序/降序的布尔标记值。在实禊耗髻编现此函数时,为了让原列表保持不变,因此从原列表中复制一个新的列表(这个代价在列表非常长时,是很大),然后执行选择排序任务;
![[Python3算法(3)] 选择排序算法[TZZ]](https://exp-picture.cdn.bcebos.com/ff5c88d8181961203fff93db70f202b374d7df8b.jpg)
4、继续向“main.py”中定义一个测试列表并打印输出,然后调试运行程序。在弹出的控制台窗口中,可以见到输出的列表内容;
![[Python3算法(3)] 选择排序算法[TZZ]](https://exp-picture.cdn.bcebos.com/979906196120a7cd955c644789b375d7987bdc8b.jpg)
![[Python3算法(3)] 选择排序算法[TZZ]](https://exp-picture.cdn.bcebos.com/19587f20a7cd0c6e61c09d06fed7997bbaf4dd8b.jpg)
5、关闭控制台,返回到“main.py”文件中,继续添加“测试选择排序(升序)函数”的代码,然后调试运行程序。在弹出的控制台窗口中,检测输出的按升序排列的列表,确认选择排序算法是否实现正确;
![[Python3算法(3)] 选择排序算法[TZZ]](https://exp-picture.cdn.bcebos.com/6061b9cd0c6efbf29981ea62127bbbf4db58da8b.jpg)
![[Python3算法(3)] 选择排序算法[TZZ]](https://exp-picture.cdn.bcebos.com/a68c126efbf202b3e9e506ce30f4da5873dadb8b.jpg)
6、关闭控制台窗口,返回到“main.py”文件中,继续添加“按降序排序”的测试代码,然后调试运行程序。在弹出的控制台窗口中,可以见到按降序排列的列表内容;
![[Python3算法(3)] 选择排序算法[TZZ]](https://exp-picture.cdn.bcebos.com/0d2fe5f202b375d704492441515872dadf49d88b.jpg)
![[Python3算法(3)] 选择排序算法[TZZ]](https://exp-picture.cdn.bcebos.com/2db6c1b2dc19ce2cbd29816b7fdca039121f1188.jpg)
7、对于选择排序需要补充一点,其算法复杂度为O(n^2),而并非O(n * (n – 1) * (n – 2)…1),即O(n ^ 2 / 2)。因为采用大O表示算法复杂度时,会直接将常数项忽略;
8、至此,使用Python3实现选择排序算法就介绍完了。希望能帮助您,Enjoy!