2019-06-30
基本思想:每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是
不稳定
排序。
1.遍历整个序列,将最小的数放在最前面。
2.遍历剩下的序列,将最小的数放在剩下序列的最前面。
3.重复第二步,直到只剩下一个数。
思路:
1.首先确定循环次数,并且记住当前数字和当前位置。
2.将当前位置后面所有的数与当前数字进行对比,小数赋值给key,并记住小数的位置。
2.比对完成后,将最小的值与第一个数的值交换。
重复2、3步。
public class SelectSort {
public void selectSort(int[] a) {
int length = a.length;
for (int i = 0; i < length; i++) {
int key = a[i];//key临时存储最小元素
int position = i;//position指向最小元素
//j向后遍历,查找最小元素
for (int j = i + 1; j < length; j++) {
if (a[j] < key) {
key = a[j];
position = j;
}
}
//第i个元素与position位置的最小元素交换
a[position] = a[i];
a[i] = key;
}
System.out.println(Arrays.toString(a));
}
@Test
public void testSelectSort() {
int[] a = {35, 11, 24, 52, 77, 69, 8, 3, 6, 62};
int[] b = {7, 9, 3, 2, 5, 8, 6};
selectSort(a);
selectSort(b);
}
}
/*
Output:
[3, 6, 8, 11, 24, 35, 52, 62, 69, 77]
[2, 3, 5, 6, 7, 8, 9]
*/