跟着动画学 Go 数据结构之选择排序
选择排序
选择排序(selection sort)是一种原地(in-place)排序算法,适用于数据量较少的情况。由于选择操作是基于键值的且交换操作只在需要时才执行,所以选择排序长用于数值较大和键值较小的文件。
思想: 对一个数组进行排序,从未排序的部分反复找到最小的元素,并将其放在开头。
给定长度为 的序列和位置索引 的数组,选择排序将:
遍历一遍序列,寻找序列中的最小值。在 范围内找出最小值
minValue
的位置minIndex
,用当前位置的值交换最小值。第 i 项的值与交换 minIndex 的值交换,
swap(nums[i],nums[minIndex])
对所有元素重复上述过程,直到整个序列排序完成。将下限 增加 1,并重复步骤 1 直到 。
伪代码:
复制代码
动画演示
Go 代码实现
复制代码
运行结果为:
复制代码
总结
选择排序的优点:
易于实现,容易理解
原地排序(不需要额外的存储空间),即 空间复杂度为
缺点:
扩展性较差
时间复杂度为
稳定性:
选择排序是不稳定的排序算法。
版权声明: 本文为 InfoQ 作者【宇宙之一粟】的原创文章。
原文链接:【http://xie.infoq.cn/article/735775c4a511afe0af2235ba7】。文章转载请联系作者。
评论