在日常工作中或面试过程中,常常会遇到算法抉择的问题,本文对常见的抉择排序算法原理与实现进行了可视化介绍,并对其应用场景进行了阐明。
算法介绍
抉择排序(Selection sort)是一种简略直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,寄存到排序序列的起始地位,而后,再从残余未排序元素中持续寻找最小(大)元素,而后放到已排序序列的开端。以此类推,直到所有元素均排序结束。
算法实现
该算法将输出列表分为两局部:在列表的前部(左侧)从左到右构建的已排序我的项目子列表和占据列表其余部分的残余未排序我的项目的子列表。最后,排序的子列表是空的,未排序的子列表是整个输出列表。该算法通过在未排序的子列表中找到最小(或最大,取决于排序程序)元素,将其与最左侧的未排序元素(按排序程序搁置)替换,并将子列表边界向右挪动一个元素来持续进行。
可视化展现
selectionsort.gif
过程阐明
最后,该列表分为两局部。一个已排序的列表位于最左侧,其余未排序的列表位于最右侧。同样在开始排序列表是空的,所有元素都在未排序列表中。而后咱们从未排序列表中选取最小的元素并将其放入已排序列表中。而后排序列表的长度减少,未排序列表的长度缩小。该过程始终继续到未排序列表为空。
实用场景
抉择排序的次要长处与数据挪动无关。如果某个元素位于正确的最终地位上,则它不会被挪动。抉择排序每次替换一对元素,它们当中至多有一个将被移到其最终地位上,因而对 n 个元素的表进行排序总共进行至少(n-1) 次替换。在所有的齐全依附替换去挪动元素的排序办法中,抉择排序属于十分好的一种。原地操作简直是抉择排序的惟一长处,当空间复杂度要求较高时,能够思考抉择排序。其次就是在查看给定的列表是否曾经排序时能够实用该算法。