演算法學習第七日之選擇排序
阿新 • • 發佈:2021-01-12
目錄
選擇排序
定義
選擇排序思想
選擇排序圖解:
思路圖解:
程式碼實現:
package com.atguigu.sort; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; public class SelectSort { public static void main(String[] args) { int arr[] = new int[80000]; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateBegin = simpleDateFormat.format(new Date()); System.out.println(dateBegin); for (int i = 0; i < 80000; i++) { arr[i] = (int)(Math.random() * 8000); } selectSort(arr); String dateEnd = simpleDateFormat.format(new Date()); System.out.println(dateEnd); } private static void selectSort(int arr[]) { for (int i = 0; i < arr.length - 1; i++) { // 假定最小值為 arr[i] 最小值的下表索引為 i int min = arr[i]; int minIndex = i; for (int j = i + 1; j < arr.length; j++) { // 如果 arr[i] 不是最小的 if (min > arr[j]) { // 將最小值及其索引儲存在 min 和 minIndex中 min = arr[j]; minIndex = j; } } // 如果 i 不是最小值的下標 而 j = minIndex才是 // 則 將此時 i 下標的值 賦值給 arr[minIndex] // 再將 min 中存的最小值賦值給 arr[i] 即可 if (minIndex != i) { arr[minIndex] = arr[i]; arr[i] = min; } System.out.printf("第%d輪",i+1); System.out.println(Arrays.toString(arr)); } } }