當前位置:成語大全網 - 新華字典 - JS實現數組排序的方法有哪些

JS實現數組排序的方法有哪些

從給定的數據中,隨機抽出壹項,這項的左邊放所有比它小的,右邊放比它大的,然後再分別這兩邊執行上述操作,采用的是遞歸的思想,總結出來就是 實現壹層,分別給兩邊遞歸,設置好出口

function?fastSort(array,head,tail){

//考慮到給每個分區操作的時候都是在原有的數組中進行操作的,所以這裏head,tail來確定分片的位置

/*生成隨機項*/

var?randomnum?=?Math.floor(ranDom(head,tail));

var?random?=?array[randomnum];

/*將小於random的項放置在其左邊?策略就是通過壹個臨時的數組來儲存分好區的結果,再到原數組中替換*/

var?arrayTemp?=?[];

var?unshiftHead?=?0;

for(var?i?=?head;i?<=?tail;i++){

if(array[i]<random){

arrayTemp.unshift(array[i]);

unshiftHead++;

}else?if(array[i]>random){

arrayTemp.push(array[i]);

}

/*當它等於的時候放哪,這裏我想選擇放到隊列的前面,也就是從unshift後的第壹個位置放置*/

if(array[i]===random){

arrayTemp.splice(unshiftHead,0,array[i]);

}

}

/*將對應項覆蓋原來的記錄*/

for(var?j?=?head?,?u=0;j?<=?tail;j++,u++){

array.splice(j,1,arrayTemp[u]);

}

/*尋找中間項所在的index*/

var?nowIndex?=?array.indexOf(random);

/*設置出口,當要放進去的片段只有2項的時候就可以收工了*/

if(arrayTemp.length?<=?2){

return;

}

/*遞歸,同時應用其左右兩個區域*/

fastSort(array,head,nowIndex);

fastSort(array,nowIndex+1,tail);

}

JavaScript實現多維數組、對象數組排序,其實用的就是原生的sort()方法,用於對數組的元素進行排序。

sort() 方法用於對數組的元素進行排序。語法如下:

arrayObject.sort(sortby)

例如:

function?NumAscSort(a,b)

{

return?a?-?b;

}

function?NumDescSort(a,b)

{

return?b?-?a;

}

var?arr?=?new?Array(?3600,?5010,?10100,?801);?

arr.sort(NumDescSort);

alert(arr);

arr.sort(NumAscSort);

alert(arr);