一、選擇排序介紹
選擇排序(Selection sort)是一種簡單直觀的排序算法。
二、算法思想
第 1 趟 從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置;
然後再從剩餘的未排序元素中尋找到最小(大)元素,放到已排序的序列的末尾。
以此類推,直到全部待排序的數據元素的個數為零,元素全部有序。
三、實現過程
規律:
第 1 趟:從n個數據中找出最小的數據和第一個數據交換;
第 2 趟:從第二個數據開始的n-1個數據中再選出最小的數據與第二個數據交換;
以此類推…
第 i 趟,則從第 i 個數據開始的 n-i+1 個數據中選出最小的數據與第i個數據交換,直到整個序列有序。
四、代碼實現
<code>public class SelectSort { public static void main(String[] args) { System.out.println("輸入要排序的值,輸入的每個值用逗號隔開:"); Scanner input = new Scanner(System.in); String str = input.nextLine(); // 將字符串按照","拆分成字符串數組 String[] strArray = str.split(","); // 新建數組用來存儲拆分出來的每個值 int[] array = new int[strArray.length]; // 給數組循環遍歷賦值 for (int i = 0; i < strArray.length; i++) { array[i] = Integer.parseInt(strArray[i]); } System.out.println("排序前的數組:" + Arrays.toString(array)); // 排序 selectSort(array); System.out.println("排序後的數組:" + Arrays.toString(array)); } /** * 選擇排序 * * @param array 待排序的數組 */ private static void selectSort(int[] array) { //判斷數組為空或為一個元素的情況 if (null == array || array.length <= 1) { return; } for (int i = 0; i < array.length - 1; i++) { int tempIndex = i; // 當前最小元素的索引 int temp = array[i]; // 臨時變量為當前最小元素 // 循環遍歷待排序的數組 for (int j = i + 1; j < array.length; j++) { // 如果發現有比這個最小位置處的元素更小的元素,則將那個更小的元素的下標賦給臨時變量 if (temp > array[j]) { temp = array[j]; tempIndex = j; } } // 如果臨時變量發生改變,則說明有比當前外層循環位置更小的元素,需要將這兩個元素交換位置 if (tempIndex != i) { array[tempIndex] = array[i]; array[i] = temp; } System.out.println(" 第" + (i + 1) + "趟後:" + Arrays.toString(array)); } }}/<code>
五、執行結果:
六、更多算法學習
幫忙轉發文章後,關注私信回覆【學習】即可獲取算法相關視頻及文檔
閱讀更多 Java高級碼農 的文章