經典演算法(19)教你兩分鐘學會【選擇排序】
寫在前面: 我是 揚帆向海,這個暱稱來源於我的名字以及女朋友的名字。我熱愛技術、熱愛開源、熱愛程式設計。
技術是開源的、知識是共享的
。
這部落格是對自己學習的一點點總結及記錄,如果您對 Java、演算法 感興趣,可以關注我的動態,我們一起學習。
用知識改變命運,讓我們的家人過上更好的生活
。
相關文章:
一、選擇排序介紹
選擇排序(Selection sort)是一種簡單直觀的排序演算法。
二、演算法思想
第 1 趟
從待排序的資料元素中選出最小(或最大)的一個元素
,存放在序列的起始位置;
然後再從剩餘的未排序元素中尋找到最小(大)元素
,放到已排序的序列的末尾。
以此類推,直到全部待排序的資料元素的個數為零,元素全部有序。
三、實現過程
規律:
- 第 1 趟:
從n個資料中找出最小的資料和第一個資料交換
; - 第 2 趟:
從第二個資料開始的n-1個資料中再選出最小的資料與第二個資料交換
; - 以此類推…
- 第 i 趟,則
從第 i 個資料開始的 n-i+1 個資料中選出最小的資料與第i個資料交換,直到整個序列有序
。
四、程式碼實現
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));
}
}
}
執行結果:
由於水平有限,本部落格難免有不足,懇請各位大佬不吝賜教!
相關文章
- 經典排序之選擇排序(Java)排序Java
- 排序演算法__選擇排序排序演算法
- 排序演算法:選擇排序排序演算法
- 五分鐘學會一個高難度演算法:希爾排序演算法排序
- 五分鐘學會一個高難度演算法:快速排序演算法排序
- 經典演算法之基數排序兩種實現演算法排序
- 演算法學習之選擇排序和堆排序:演算法排序
- 奈學教你五分鐘學會分散式事務分散式
- 【一起學習排序演算法】3 選擇排序排序演算法
- 經典排序演算法 - 快速排序Quick sort排序演算法UI
- PHP 排序演算法之選擇排序PHP排序演算法
- 排序演算法入門:選擇排序排序演算法
- 排序演算法——簡單選擇排序排序演算法
- 經典演算法之快速排序演算法排序
- [經典排序演算法][集錦]排序演算法
- 經典排序演算法回顧:排序演算法
- 排序演算法(七大經典排序演算法)排序演算法
- 常用演算法-選擇排序演算法排序
- java選擇排序演算法Java排序演算法
- 一分鐘教你學會搭建ngrok內網穿透內網穿透
- 排序演算法 - 氣泡排序和選擇排序排序演算法
- 演算法基礎:排序演算法:選擇排序演算法排序
- Python排序演算法之 選擇排序Python排序演算法
- 排序演算法入門之「選擇排序」排序演算法
- JavaScript實現經典排序演算法JavaScript排序演算法
- 經典排序演算法PHP實現排序演算法PHP
- 10大經典排序演算法動畫排序演算法動畫
- 幾種經典的排序演算法排序演算法
- 20分鐘學會DBSCAN聚類演算法聚類演算法
- #排序演算法#【1】概述、氣泡排序、選擇排序排序演算法
- Docker虛擬化管理:30分鐘教你學會用DockerDocker
- 排序演算法之「選擇排序(SelectionSort) 」排序演算法
- 深入淺出的排序演算法-選擇排序排序演算法
- 排序演算法總結之直接選擇排序排序演算法
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- 畫江湖之演算法篇【排序演算法】選擇排序演算法排序
- 畫江湖之演算法篇 [排序演算法] 選擇排序演算法排序
- 用 PHP 實現經典排序演算法PHP排序演算法