版權聲明:本文爲博主原創文章,未經博主容許不得轉載。javascript
選擇排序的基本思想:選擇排序是一種相對來講比較簡單的排序算法,基本思路是從數組的第一個元素開始,比較第一個元素的和其餘元素的大小,而後把最小的一個元素和第一個元素交換,而後再進行的第二次排序,從第二個元素開始,比較第二個元素和其餘元素的大小,再把第二個元素,和以後的元素進行比較,同理把最小的一個元素放在第二個元素的位置,以此類推,一直到數組的倒數第二個元素,到此爲止,排序完畢,下面是引用的一張百度的圖片,個將選擇排序表達的比較清楚。java
附上具體的代碼實現(javascript數據結構與算法):算法
/** ** 數據元素交換 **/ function swap(arr, t1, t2){ let temp = arr[t1]; arr[t1] = arr[t2]; arr[t2] = temp; } function selectSort(arr) { var minIndex; for(var i=0;i<arr.length;i++){ minIndex = i; for(var j=i+1;j<arr.length; j++) { if(arr[j] < arr[i]){ minIndex = j; } swap(arr, i, minIndex); } } }
O(n^2)數組
插入排序基本思想: 通俗一點,好比在咱們在鬥地主的時候,開始摸到的牌都是亂的,而後咱們按照必定的順序整理撲克牌,就是根據牌的大小插入到合適的位置,下面引用一個圖片,用來講明插入排序的算法:數據結構
圖片詳解:
(1) 首先對於第一個元素53,咱們保持不動;
(2)下面咱們看27這個元素,咱們要作的是把27這個元素和前面的元素比較,27<53,因此27和53交換位置;
(3)36和前面的元素比較: 36<53,因此36和53交換位置,再將36和和前面的元素比較,36>23 因此36就應該插入再27和53之間;
以此類推,直到最後一個元素插入到合適的位置,該數組排序完畢;
代碼實現:spa
function insertionSort(arr) { var temp, inner; for (var outer = 1; outer <= arr.length - 1; ++outer) { temp = arr[outer]; inner = outer; while (inner > 0 && (arr[inner - 1] >= temp)) { arr[inner] = arr[inner - 1]; --inner; } arr[inner] = temp; } }