高效理解排序之——選擇排序-含JAVA程式碼(簡潔明瞭,非無腦COPY)
前言
選擇排序(Selection Sort),(從小到大的排序)每次選擇一個最值放入第一個位置,個人認為原理比氣泡排序的原理更好理解。
基本思路
- 在所有的元素中選擇一個最小的元素,與第一個位置的元素交換位置。
- 在剩下的元素中選擇一個最小的元素與第二個元素交換位置。
- 重複...
(如果上面的思路描述你沒看懂也沒關係,看下面的圖解)
圖解
如何找出最小的元素?第一個元素與相鄰的後一個元素比較大小(2<3)。找出兩者中較小的一個元素(2)繼續與下一個元素(1)比較,直到最後一個元素。這種依次比較的方式是不是跟之前說過的氣泡排序(Bubble Sort)很像,可以參考:高效理解排序之——氣泡排序-JAVA版
看了這個圖解再回過頭看下思路,思路才是最重要的。
程式碼實現
java版本
import java.util.Arrays;
public class SelectionSort {
public static void main(String []args) {
int[] array = new int[]{2,3,1,6,4,5};
sort(array);
System.out.print(Arrays.toString(array));
}
public static void sort(int[] array){
for(int i=0; i < array.length-1; i++){
int minIndex = i;
for(int j = i+1;j < array.length; j++ ){
minIndex = array[j] < array[minIndex] ? j : minIndex;
}
//可以新增判斷條件 i != minIndex時才替換
//if(i == minIndex){continue;}
int temp = array[i];
array[i] = array[minIndex];
array[minIndex] = temp;
System.out.println("第"+(i+1)+"輪:"+Arrays.toString(array));
}
}
}
溫馨提示:千萬不要死記程式碼,很容易忘記,演算法思想遠比程式碼重要。
效率
時間複雜度: O() 空間負責度: O(1) 穩定性:不穩定
本章關鍵字總結:選擇 指定位置
相關文章
- 經典排序之選擇排序(Java)排序Java
- 選擇排序的簡單理解排序
- Java 選擇排序Java排序
- 簡單選擇排序排序
- PHP 排序演算法之選擇排序PHP排序演算法
- Python排序演算法之 選擇排序Python排序演算法
- 排序演算法之「選擇排序(SelectionSort) 」排序演算法
- 排序演算法入門之「選擇排序」排序演算法
- 簡單選擇排序就是簡單~~~排序
- 選擇排序和快速排序排序
- 【JS面試向】選擇排序、桶排序、氣泡排序和快速排序簡介JS面試排序
- 選擇排序排序
- 【演算法】排序04——程式碼簡約而不簡單的希爾排序(含程式碼實現)演算法排序
- java選擇排序演算法Java排序演算法
- 排序演算法:選擇排序排序演算法
- 排序演算法__選擇排序排序演算法
- 選擇排序和氣泡排序排序
- 氣泡排序與選擇排序排序
- 桶排序 選擇,插入排序排序
- 選擇排序就這麼簡單排序
- 簡單選擇排序(Simple Selection Sort)排序
- 演算法學習之選擇排序和堆排序:演算法排序
- 程式猿修仙之路--演算法之選擇排序演算法排序
- js選擇排序JS排序
- 01選擇排序排序
- 選擇排序法排序
- 排序——選擇排序小練習(二)排序
- 排序——選擇排序小練習(一)排序
- 排序演算法 - 氣泡排序和選擇排序排序演算法
- 排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)排序演算法
- JAVA基礎之程式碼簡潔之道Java
- 選擇和氣泡排序核心程式碼及流程圖排序流程圖
- Java實現二元選擇排序Java排序
- php實現 氣泡排序,插入排序,選擇排序PHP排序
- 圖解選擇排序與插入排序圖解排序
- 氣泡排序和選擇排序流程圖排序流程圖
- 排序演算法入門:選擇排序排序演算法
- 氣泡排序和選擇排序詳解排序