直接选择排序
算法思路:
假设有n个数,需要进行n-1趟比较。
第1趟比较:将第一个位置的数据依次和它后面的每个数据进行比较, 如果第一个位置的数据大于后面的某个数据,就交换它们...以此类推。 经过第一趟比较之后,这组数据中最小的数据被选出排在第一位。
第2趟比较:将第二个位置的数据依次和它后面的数据进行比较,如果 大于后面的某个数据,就交换它们...以此类推。经过第二趟比较之后这 组数据的第二小的数据被选出排在第二位。
.
.
.
经过n-1趟比较之后,这组数据中第n-1小的数据被选出排在第n-1位,剩下的就是最大的数据排在最后一位。
算法实现
从上面的排序算法中可以发现,每一趟比较只要程序发现某个数据比前面的数据小就立即交换它们,这会导则每一趟中都会频繁的进行数据交换,导致算法效率低下。
改进思路
每趟比较的目的只是找出本趟比较中最小数据的索引(minIndex),本趟结束之后判断本趟开始下标i与最小下标minIndex如果不相等,交换i和minIndex两处的数据
改进算法实现
算法总结:
时间复杂度为:O(n²)
空间复杂度为:O(1)
直接选择排序是不稳定的。