第一種是通過兩個for迴圈,每一次對比相鄰兩個資料的大小,小的排在前面,如果前面的資料比後面的大就交換這兩個數的位置,這個方法就是比較次數太多了,效率比價低。
我只是傳入了乙個10位數的陣列,如果是上萬或者更大的資料,不知道您的電腦會不會藍屏了,嘿嘿,你可以試試哦!
var
sort=
function
(arr)
}
}
return
arr;
}
或者var sort = function(arr)
} return arr
}sort([10,10,1,2,4,6,7,89,7,4])
輸出結果
下面我們來說說第二種方法,這方法是我瀏覽阮一峰老師日誌看到的,這種方法的效率會高很多,具體選哪種,看情況吧!
var
quicksort =
function
(arr)
var
pivotindex = math.floor(arr.length / 2);
//取基準點
var
pivot = arr.splice(pivotindex, 1)[0];
//取基準點的值,splice(index,1)函式可以返回陣列中被刪除的那個數
var
left = ;
//存放比基準點小的陣列
var
right = ;
//存放比基準點大的陣列
for
(
var
i = 0; i < arr.length; i++)
else
}
//遞迴執行以上操作,對左右兩個陣列進行操作,直到陣列長度為<=1;
return
quicksort(left).concat([pivot], quicksort(right));
};
使用的時候,直接呼叫quicksort()就行了。
參考文獻:
關於JS的快速排序實現方法
由於自己不是計算機專業,資料結構沒有太多研究,曾經面試時有被問過關於快速排序以及氣泡排序的寫法,氣泡排序比較簡單,當時能回答出來,但是快速排序當時就比較懵逼,不知道是個什麼方式實現的,面試回來後也沒太在意,最近在看c語言的資料結構,拓展下這方面的知識,其中就看到了關於快排演算法的描述 描述如下 在待...
快速排序的js實現
該方法的基本思想是 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。var quicksort function arr var pivotindex math.floor arr....
js實現快速排序
快排思想 1 在資料集之中,選擇乙個元素作為 基準 pivot 2 所有小於 基準 的元素,都移到 基準 的左邊 所有大於 基準 的元素,都移到 基準 的右邊。var quicksort function arr var pivotindex math.floor arr.length 2 var ...