十大排序(C++版)-- 选择排序(SelectSort)
选择排序也是一种易于理解的算法。在长度为n的数组中,其实现原理是每次遍历数组时选择一个最小的值的下标,与当前数组遍历的开头交换,保证每遍遍历的开头都是最小的数,正好与冒泡相反。代码实现如下:
同样的这样一个数组:[5,3,8,6,9,2,1,4,7]
打印每遍遍历后的结果。


图中可以很明显的看到,每遍遍历后都选中了最小的值的下标,并于当前遍历的头下标进行交换,执行n-1次。与冒泡排序类似。
时间复杂度:O(n^2),空间复杂度:O(1)
既然时空复杂度一样,每遍数组遍历结果也类似,那么优缺点当然也是一样的啦!(不是)由于每遍都要重复遍历数组选取最小值的下标,那么即使在最好的情况下时间复杂度也是O(n^2)。