排序---选择排序

按照由小到大的顺序排列,选择排序基本步骤:算法

一、从已有的元素中选择一个最小的元素与第一个元素交换;blog

二、对剩下的n-1个数值重复1的步骤,直到剩下的数值个数为1。排序

令minIdx为最小元素下标,好比5,4,3,2,1的排序步骤以下:im

第一遍:minIdx=0; 4<5,minIdx=1;  3<4,minIdx=2;   2<3,minIdx=3;   1<2,minIdx=4;比较次数为4次,最后将第一个元素5和minIdx对应的元素交换获得1,4,3,2,5  数据

第二遍:minIdx=1; 3<4,minIdx=2;  2<3,minIdx=3; 因为2 <5,因此最终minIdx=3;比较次数为3次,而后将第二份元素与minIdx对应的元素交换获得1,2,3,4,5img

第三遍:minIdx=2;因为 3<4<5,因此最终minIdx=2;比较次数为2次,无需交换元素顺序依然为1,2,3,4,5时间

第四遍:minIdx=3;因为4<5,因此最终minIdx=3;比较次数为1次,无需交换元素顺序依然为1,2,3,4,5co

时间复杂度永远都是:,交换元素的次数最多只有N-1次,明显比冒泡排序少了。虽然冒泡排序在序列已经有序的时侯比较次数是N-1次,也不须要交换元素此时会比选择排序快,可是平均状况下比较次数和选择排序同样,交换次数却比选择排序多得多,因此选择排序会比冒泡排序要快点。ps

选择排序算法是不稳定的,由于当数据相同时会发生位置交换,如序列:3,3,2,4,1第一次交换就变成了1,3,2,4,3。

相关文章
相关标签/搜索