1.啥是选择排序?
就是先“看”一遍整个未排好的数组,再把数组中最小的(以小为例)一项挪到已排好的数组后,并重复进行,直到未排好数组全部被整理到已排好的数组里。
2.选择排序思路
以下步骤均以乱序数组 arr 为例从小到大排列:
int[] arr = {5, 8, -7, 4, 6, -9, 3, -1, 2,-65};
回归定义:
先“看”一遍整个未排好的数组,找到数组中最小的一项移动
因此我们要先找到未排序数组中的最小项:
int min = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[min]) {
min = j;
}
}
然后把最小的一项挪到已排好的数组后(即i-1之后)
将找到的最小值的那一位与原来第i位交换:
int b = array[i];
array[i] = array[min];
array[min] = b;
重复进行,直到未排好数组全部被整理到已排好的数组里
用循环来重复进行:
for (int i = 0; i < array.length - 1; i++) {
int min = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[min]) {
min = j;
}
}
int b = array[i];
array[i] = array[min];
array[min] = b;
}
3.输出语句:
for (int p = 0; p < array.length; p++) {
System.out.print(array[p] + " ");
}
选择排序方法全部代码:
public void Select_sort(int[] array) {
System.out.println();
System.out.print("选择排序: ");
for (int i = 0; i < array.length - 1; i++) {
int min = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j] < array[min]) {
min = j;
}
}
int b = array[i];
array[i] = array[min];
array[min] = b;
}
for (int p = 0; p < array.length; p++) {
System.out.print(array[p] + " ");
}
}