今天以下文章来源于xueyuanjun ,作者xueyuanjun 今天继续介绍排序算法 —— 选择排序。 实现原理选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。但是选择排序每次会从未排序区间中找到最小的元素,将其放到已排序区间的末尾。这样一来,当遍历完未排序区间,就意味着已经完成整个序列的排序了。图示如下: 同样,可以在 VisuAlgo 上看动态图:https:///zh/sorting。 示例代码选择排序的实现逻辑非常简单,对应的 Go 实现代码如下:
由于传递到 表明排序算法可以正常工作。 性能分析接下来,我们来看看选择排序的性能和稳定性:
综合比较前面介绍的三种排序算法,时间复杂度都是一样的,也都是原地排序,但是选择排序是不稳定的排序算法,此外,插入排序和冒泡排序相比较的话,插入排序只需要执行一条语句,而冒泡排序需要三条,因此在同等条件下,或者数据量很大的情况下,插入排序性能是要略优于冒泡排序的,所以综合比较下来,三者的优先级是插入排序 > 冒泡排序 >> 选择排序。 不过三者的时间复杂度都是 O(n2),在数据量很大的情况下性能表现其实都不理想,还可以进一步进行优化,这就是我们接下来要介绍的归并排序和快速排序算法。 (本文完) |
|