//原理:每次都是先後兩兩比較而後根據大小交換位置(能夠從小到大,或者相反) //1.prepare swap fn function swap(array,index1,index2) { var aux = array[index1]; array[index1] = array[index2]; array[index2] = aux; } //2.double for function bubbleSort(arr){ let length = arr.length for (let i=0;i<length;i++){ for (let j=0;j<length-1;j++){ if (arr[j] > arr[j+1]){ swap(arr,j,j+1) } } console.log(arr) //過程 } console.log('result',arr) //結果 } let test = [1,5,4,3,2] bubbleSort(test)
控制檯運行實例:spa
function swap(array,index1,index2) { var aux = array[index1]; array[index1] = array[index2]; array[index2] = aux; } //selectionSort //原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置, //而後,再從剩餘未排序元素中繼續尋找最小(大)元素,而後放到已排序序列的末尾。 //以此類推,直到全部元素均排序完畢。 function selectionSort(arr) { let len = arr.length; for (let i = 0; i < len - 1; i++) { let minIndex = i; //假設arr中最小值得index爲minIndex for (let j = i + 1; j < len; j++) { if (arr[j] < arr[minIndex]) { // 尋找最小的數 minIndex = j; // 將最小數的索引保存 } } swap(arr,minIndex,i) //將實際最小值index(爲i)賦值給minIndex,即得到當前一輪排序後的新arr console.log(arr) //過程 } console.log('result',arr) //結果 return arr; } let test = [5,4,1,3,2] selectionSort(test)
控制檯實例:3d