选择排序 - 数据结构训练营

如上,小朋友排队,由低到高,要怎么调整呢? 一个可行的思路是首先找到最低的小朋友,让他和最前面的小朋友交换位置。在找到第二低的小朋友,让他和排在第二的小朋友交换位置......这样到最后一个小朋友时,队伍就是从低到高排列了。 这种排序算法就是选择排序。选择排序是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 选择排序空间复杂度为 O(1),是一种原地排序(Sorted in place)算法。原地排序算法,就是特指空间复杂度是 O(1) 的排序算法。 选择排序的最好情况时间复杂度、最坏情况和平均情况时间复杂度都为 O(n2)。 如果待排序的序列中存在值相等的元素,经过排序之后,相等元素之间原有的先后顺序不变,则该算法为稳定的排序算法。选择排序是一种不稳定的排序算法。选择排序每次都要找剩余未排序元素中的最小值,并和前面的元素交换位置,这样破坏了稳定性。
使用正确的数据结构可以大大简化原本复杂的逻辑。如果很注重性能或想节约内存,那么就需要选择正确的数据结构。来和我一起用 JavaScript 语言来实现一些常用数据结构吧。


运行