上一篇文章讲到了冒泡排序,选择排序其实跟冒泡排序差不多,也是比较两个数的大小,然后交换他们的位置,不同的是冒泡排序比较的是相邻两个元素的大小,而选择排序是选中一个元素,比较他和数组内所有的元素,最终将比较后的值放在他该在的位置,还是直接上代码.
public class ArithmeticTest {
/**
* 选择排序
*/
public static void main(String[] args) {
int[] dest = new int[]{12, 3, 11, 56, 37, 9, 28};
printArray(dest);
System.out.println("---------------------");
int[] result = chooseSort(dest);
printArray(result);
}
private static int[] chooseSort(int[] nums) {
if (nums.length == 0) {
return nums;
}
//循环遍历数组长度,从索引为0 开始
for (int i = 0; i < nums.length; i++) {
//最小数的索引,每次循环总认为第一个数最小
int minIndex = i;
for (int j = i; j < nums.length; j++) {
if (nums[j] < nums[minIndex]) {
//将索引赋值
minIndex = j;
}
}
System.out.println("最小数:" + nums[minIndex]);
//交换位置
int temp = nums[minIndex];
nums[minIndex] = nums[i];
nums[i] = temp;
printArray(nums);
System.out.println("-------------------");
}
return nums;
}
private static void printArray(int[] dest) {
for (int i = 0; i < dest.length; i++) {
System.out.print(dest[i] + " ");
}
System.out.println(" ");
}
}
打印结果,是依次找出最小数的