选择排序(数组、链表)

直接选择排序:直接选择排序的作法是:第一趟扫描所有数据,选择其中最小的一个与第一个数据互换;第二趟从第二个数据开始向后扫描,选择最小的与第二个数据互换;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。

那 是不是稳定的呢,我们可以观察一次扫描中,要交换最小的一个与第一个数据,最小的这个我们可以保证它依然稳定,但我们能否保证第一个数据依然不破坏稳定 呢?答案是不可以,比如 2 3 2" 1,2与1交换后1 3 2" 2,这样的确就不是稳定的了。根据我们上面的分析,我们把1 3 2" 2作为一个新的序列我们可以发现,它应当与上面的2" 3 2 1执行到1 3 2" 2处的执行序列一样,严格说明了它肯定不稳定。因为要麽使2 3 2" 1不稳定,要麽使1 3 2" 2不稳定。

实际上如果用链表实现一个直接选择排序,这样它只改变了最小元素的位置,并没有交换,这样可以是稳定的,但一般的直接选择排序是指上面用交换的方法。

原文地址:https://www.cnblogs.com/yyxayz/p/4136815.html