js里最常見的排序方法有兩種,冒泡排序和選擇排序。

(1)冒泡排序 原理是數(shù)組中兩兩元素進(jìn)行比較,如果第一個(gè)比第二個(gè)大,交換值,再讓第二個(gè)跟第三個(gè)比較,以此類推,第一輪結(jié)束后,最大值排到了最后,再進(jìn)行第二輪比較,第二個(gè)大值排到倒數(shù)第二個(gè)位置上


代碼如下:


var arr =[33,22,29,12,59];//創(chuàng)建一個(gè)新數(shù)組


function bubbleSort(arr){


? ? ? for(var i = 0;i<arr.length-1;1++){//外層循環(huán)控制比較幾輪


? ? ? ? ? for(var j = 0;j<arr.length-1-i;j++){//內(nèi)層循環(huán)控制每輪比較幾個(gè)元素


? ? ? ? ? ? ? ? ? if(arr[j]>arr[j+1]){


//判斷每一次比較的時(shí)候,兩個(gè)數(shù)字的大小。


//arr[j]是第j個(gè)元素// arr[j+1]是第j+1 個(gè)元素


//如果j > j + 1, 把j 和j+i交換,也就是把相對大的值往后排序 也就是從小到大排序


//如果j < j + 1, 把相對小的值往后排 也就是從大到小排序


? ? ? ? ? ? ? ? ? ? ? ? var temp = arr[j];


? ? ? ? ? ? ? ? ? ? ? ? arr[j] = arr[j+1];


? ? ? ? ? ? ? ? ? ? ? ? arr[j+1]=temp;


? ? ? ? ? ? }


? ? ? ? }


? }


return arr;


}


console.log(bubbleSort(arr));


//輸出結(jié)果為:12,22,29,33,59


(2)選擇排序 原理假定第一個(gè)值為最小值,設(shè)一個(gè)變量minIndex指向這個(gè)最小值的索引,讓這個(gè)值和剩余的其他值進(jìn)行比較,如果有比這個(gè)值小的,改變minIndex的值,再讓minIndex指向的值和剩余的值進(jìn)行比較,還有小的,繼續(xù)改變minIndex的值,第一輪結(jié)束后,minIndex指向就是最小值,讓這個(gè)最小值和第一個(gè)值交換位置


function selectSort(arr){


? ? ? for(var i = 0;i<arr.length-1;i++){


? ? ? ? ? var minIndex = i;


? ? ? ? ? ? for(var j=i+1;j<arr.length;j++){


? ? ? ? ? ? ? if(arr[minIndex]>arr[j]){//尋找最小值


? ? ? ? ? ? ? ? ? ? minIndex = j;//保存最小值索引


? ? ? ? ? ? ? }


? ? ? ? }


? ? ? var temp = arr[i];


? ? arr[i] = arr[minIndex];


? ? arr[minIndex] = temp;


}


? return arr;


}


console.log(selectSort(arr));

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容