练习练习练习!!!
import java.util.Arrays; /** * @Date: 2019-11-24 09:20 * @King: No blood!No bone!No ash!!! */ public class TestSelectionSort { public static void main(String[] args) { /** * 定义数组 */ int [] arr = new int[7]; arr[0] = 31; arr[1] = 13; arr[2] = 21; arr[3] = 33; arr[4] = 10; arr[5] = 25; arr[6] = 11; /** * 输出排序前 */ System.out.println("排序前:"+ Arrays.toString(arr)); /** * 调用两种选择排序方法,并输出结果 */ selectionSortI(arr); System.out.println("无返回值类型排序后:"+Arrays.toString(arr)); selectionSortII(arr); System.out.println("有返回值类型排序后:"+Arrays.toString(arr)); } /** * 无返回值类型的选择查找 */ public static void selectionSortI (int [] array) { /** * 外层循环控制排序趟数 */ for (int i = 0;i < array.length - 1;i++) { for (int j = i;j < array.length - 1;j++) { /** * 假设每趟循环开始位置的元素最小,下标为minIndex = i */ int minIndex = i; /** * 一趟循环结束发现比array[minIndex]小的元素,将其下标赋给minIndex * 一趟循环结束后将最小元素与开始元素交换位置 */ if (array[minIndex] > array[j + 1]) { minIndex = j + 1; } int temp = array[minIndex]; array[minIndex] = array[i]; array[i] = temp; } } } /** * 有返回值类型的选择查找 */ public static int [] selectionSortII (int [] array) { if (array.length == 0) { return array; } for (int i = 0;i < array.length - 1;i++) { int minIndex = i; for (int j = i;j < array.length - 1;j++) { if (array[minIndex] > array[j+1]) { minIndex = j + 1; } int temp = array[minIndex]; array[minIndex] = array[i]; array[i] = temp; } } return array; } }
运行结果:
排序前:[31, 13, 21, 33, 10, 25, 11] 无返回值类型排序后:[10, 11, 13, 21, 25, 31, 33] 有返回值类型排序后:[10, 11, 13, 21, 25, 31, 33]
尽量让自己养成编程保证程序健壮性的习惯!