选择排序法思路:在要排序的一组数列中,从最左边开始,依次和后面的每个元素进行比较,小的数往左移动,每趟比较完后,这一组数列中最小的数出现在最左边。
选择排序分析:
我们先判断要排序的数列需要排序几趟,这里小编同样也随便定义一个数列:{44,88,111,77,22}
,我们就以这个数列为例子:
我们不难看出,这个数列有 5 个元素,我们则需要进行 4 趟排序:
规律:
1、一共比较了 array.length - 1趟
2、每一趟比较的次数比上一趟少一次
3、每一趟比较的数的起始位置比上一趟要 + 1
第一趟排序
代码示例:
int i = 0;
for (int j = 1; j < array.length; j++) {
if (array[i] > array[j]) {
int temp = 0;
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
第二趟排序
代码示例:
i = 1;
for (int j = 2; j < array.length; j++) {
if (array[i] > array[j]) {
int temp = 0;
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
第三趟排序
代码示例:
i = 2;
for (int j = 3; j < array.length; j++) {
if (array[i] > array[j]) {
int temp = 0;
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
第四趟排序
代码示例:
i = 3;
for (int j = 4; j < array.length; j++) {
if (array[i] > array[j]) {
int temp = 0;
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
根据上面的代码我们可以简化如下:
public static void main(String[] args) {
int[] array = {44,88,111,77,22};
System.out.println("选择排序前:" + Arrays.toString(array));
selectionSort02(array);
System.out.println("选择排序后:" + Arrays.toString(array));
}
/**
* 选择排序
* @author ZMF
*
*/
public static void selectionSort02(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array[i] > array[j]) {
int temp = 0;
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
至此,选择排序小编就讲解到这里,如有疑问请留言!!!