vlambda博客
学习文章列表

每周算法|选择排序法

选择排序法

选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,继续放在起始位置知道未排序元素个数为0。








选择排序的步骤:

1>首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
2>再从剩余未排序元素中继续寻找最小(大)元素,然后放到未排序序列的起始位置。
3>重复第二步,直到所有元素均排序完毕。








用代码来实现上述过程,示例如下:

每周算法|选择排序法








ENTER TITLE

选择排序优化

选择排序的优化思路一般是在一趟遍历中,同时找出最大值与最小值,放到数组两端,这样就能将遍历的趟数减少一半。第一次选择最大值与最小值,过程如下:

每周算法|选择排序法








选择排序优化示例代码如下:








ENTER TITLE

稳定性

在选择排序中,每趟都会选出最大元素与最小元素,然后与两端元素交换,此时,待排序序列中如果存在与原来两端元素相等的元素,稳定性就可能被破坏。如[5,3,5,2,9],在array[0]与array[3]元素交换时,序列的稳定性就被破坏了,所以选择排序是一种不稳定的排序算法。








ENTER TITLE

时间复杂度

选择排序的时间复杂度为O(n2)。




END


@计算机学院融媒体

编辑/黄依婷

责编/胡玲

审核/张帆

监制/姚鹏 李延



长按扫描二维码
关注我们



往期推荐: