SelectionSort
选择排序 - 前一位和后面的数组进行比较。
选择排序的思想
指定两个指针,从数组头部开始,将第一个与数组后面的数字逐一进行比较,如果第一个元素小于后面相比较的元素时,交换他们的位置,否则,位置不变,直到数组末尾,完成一轮比较。
结束一轮比较之后,数组第一个元素即为数组中最小的元素,指针向前移动一个位置,继续重复过程比较,直到最终获得一个有序的数组。
代码示例
Java
实现
1 | import java.util.Arrays; |
外部循环控制第一个比较元素,即循环次数,内部循环控制第二个元素,并与第一个元素进行比较,符合条件,则进行交换。
Python
实现
1 | class Selection(): |
- 简化版
1 | def sort(nums): |
选择排序在第一次外部循环找到数组中最小的元素,将它和数组中第一个的元素位置交换(如果第一个元素最小就和自己交换),然后,进入第二次外部循环,在剩下的元素中,找到最小的元素,与第二个元素的位置交换,如此往复,完成数组排序。
因为每一次遍历一遍找出的都是最小的元素,并不能为下一次扫描提供什么信息,一个有序的数组和一个元素随机的数组排列所需的时间是一样的。
交换次数和数组大小是线性关系,数据的移动是最少的。