我们先来回顾一下什么是选择排序:
我的代码(实现的是由大到小排序):
选择排序复杂度分析:
(1)外层循环实现的是寻找最大数值的次数,假设列表内有n个元素,那么我们就要寻找n次最大值;
(2) 内层循环,实现的是寻找最大值,分别比较n,n-1,n-2次…
找最大值的复杂度为O(n),一共有n次,所以选择排序的复杂度为O(n2)。
2.1 什么是冒泡排序?
2.2 冒泡排序的算法步骤
2.3 代码实现(实现从小到大排序)
2.4 分析
如果给出的列表元素它的数值大小本身就是由小到大排列,那么此时冒泡排序的复杂度就是最低的;但如果此时是从大到小排序,那么复杂度是非常高的,可以达到O(n2)。
在我的代码中,选择排序中是将最大元素放置在开端,开始的元素一定是最大的,所以下一次遍历,从 已经确定好最新的最大值 所在下标(假设最新确定好的最大元素所在下标为n)的下一个元素(下标为n+1)开始;而对于冒泡排序,我们最后的元素是确定的最大值,那我们就限制我们循环遍历的元素它的结束点是在哪一个下标,我们可以看出这个结束点下标是 已经确定好的最新的最大值元素 所在下标(假设当前确最新确定好的最大元素所在下标为m)的前一个元素所在的下标(m-1)
原文:https://www.cnblogs.com/step1889/p/14787655.html