1.简单选择排序的思路
简单选择排序的思想就第一次从数组中选出最小(也可以是最大)的数与数组中的第一个数进行交换,第二次从数组中选出最小的数与数组中的第二个数进行交换......,直到确定a[n]和a[n-1]的顺序。
2.图解
3.代码实现
通过分析得到简单选择排序的特点:
(1)对于一个长度为n的数组需要进行n-1趟排序。
(2)每趟排序都会选择出最小(或最大)的数值,比较过程中不进行交换,只有遍历结束获得待排部分中的最小值(或最大值)后才会进行交换。
(3)对于第i趟排序来说会进行n-i次比较。
具体代码如下:
public static void main(String[] args) {
//创建一个待排数组
int[] arr = {1,3,5,4,2};
//用于记录待排序列中的最小值
int min;
//用于记录最小值的索引
int minIndex;
//对于长度为n的数组,共需n-1趟排序
for (int i = 0; i < arr.length-1; i++) {
//假定待排部分中第一个数为最小
min = arr[i];
minIndex = i;
//比较出最小的数值以及其索引
for (int j = i+1; j <arr.length ; j++) {
if (min>arr[j]){
//min中的值不是最小值,重新赋值
min=arr[j];
//记录最小值的存放位置
minIndex = j;
}
}
if (i!=minIndex){
//待排部分首个数字不是最小的,交换数值
arr[minIndex] = arr[i];
arr[i] = min;
}
}
}
新手上路欢迎大佬指教!