標籤:中間 ref asc ted 步驟 個數 全棧 javascrip class
常見的內部排序演算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸併排序、快速排序、堆排序、基數排序等。
用一張圖概括:
選擇排序
選擇排序是一種簡單直觀的排序演算法,無論什麼資料進去都是 O(n2) 的時間複雜度。所以用到它的時候,資料規模越小越好。唯一的好處可能就是不佔用額外的記憶體空間了吧。通俗來說就是你們中間誰最小誰就出列,站到隊列的最後邊,然後繼續對著剩餘的無序數組說你們中間誰最小誰就出列,站到隊列的最後邊,一直到最後一個,繼續站到最後邊,這樣數組就有了順序,從小到大。
1、演算法步驟
- 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
- 再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。
- 重複第二步,直到所有元素均排序完畢。
2、動圖示範
3、 JavaScript 代碼實現
function selectionSort(arr) { var len = arr.length; var minIndex, temp; for (var i = 0; i < len - 1; i++) { minIndex = i; for (var j = i + 1; j < len; j++) { if (arr[j] < arr[minIndex]) { // 尋找最小的數 minIndex = j; // 將最小數的索引儲存 } } temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } return arr;}
4、
Python
代碼實現
def selectionSort(arr): for i in range(len(arr)-1): for j in range(i+1, len(arr)): if arr[j] < arr[i]: arr[i], arr[j] = arr[j], arr[i] return arr
5、Java 代碼實現
public static void selectSort(int[] numbers){ int size = numbers.length; //數組長度 int temp = 0 ; //中間變數 for(int i = 0 ; i < size ; i++){ int k = i; //待確定的位置 //選擇出應該在第i個位置的數 for(int j = size -1 ; j > i ; j--){ if(numbers[j] < numbers[k]){ k = j; } } //交換兩個數 temp = numbers[i]; numbers[i] = numbers[k]; numbers[k] = temp; } }
6、Go代碼實現
func selectionSort(arr []int) []int { length := len(arr) for i := 0; i < length-1; i++ { min := i for j := i + 1; j < length; j++ { if arr[min] > arr[j] { min = j } } arr[i], arr[min] = arr[min], arr[i] } return arr}
希望可以一起交流技術,有興趣可以加qq邀請入群: 525331804 全棧技術開發qq群:581993430
JavaScript、Python、java、Go演算法系列之【快速排序】篇