以下任何言论都完全是个人的理解,如有雷同纯属巧合,如有错误,希望大家多多指出,共同学习!谢谢!
-----------------------------------------------------------------------------------------------------------------------------------------
选择排序简介:
选择排序是一种作用在数组上,不稳定的排序方法。
是一种排序算法。
作用在数组数据上,可以将数组中的元素进行排序。
具有不稳定性。(举个例子,序列5 8 5 2 9,我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。 摘自百度百科)
-----------------------------------------------------------------------------------------------------------------------------------------
个人对选择排序的理解:
假如有一个数组,需求是从小到大进行排序。
[3, 5, 2, 7, 9]
我们循环一遍这个数组,拿第0号索引上的元素,然后依次和0索引后面的所有元素进行比较,如果后面的元素比第0号索引上的元素小,那么我们就将这两个元素进行互换。然后再拿当前0号元素和之后的元素进行比较,当这个循环结束的时候,那么0号索引上的元素一定是这个数组中最小的元素。
之后我们再进行循环,拿第1号索引的元素,依次和1索引后面的所有元素进行比较。循环结束后1号索引上的元素一定是这个数组中第二小的元素。
......
......
我们需要循环几次呢?
其实循环到数组长度减一次即可。因为循环到数组长度减一次的时候,剩下的那个元素一定就是最大的元素了。
---------------------------------------------------------------------------------------------------------------------------------------
我们来把代码精简一下。
--------------------------------------------------------------------------------------------------------------------------------------------------