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