經(jīng)典的隨機(jī)排列

關(guān)于Js隨機(jī)排列,網(wǎng)上查資料后mark一下。

1、網(wǎng)上很多同學(xué)使用這個(gè)方法實(shí)現(xiàn)隨機(jī)排列需求的:Array.prototype.sort-但這個(gè)方法受sort采用的排序方法的限制不能做到真正的隨機(jī)分布。
function randomsort(a, b) {
    return Math.random()>0.5 ? -1 : 1;//用Math.random()函數(shù)生成0~1之間的隨機(jī)數(shù)與0.5比較,返回-1或1
}
var arr = [0,1, 2, 3, 4, 5,6,7,8,9];
arr.sort(randomsort);
2.經(jīng)典的隨機(jī)排列, O(n) 復(fù)雜度
function shuffle(arr){
  var len = arr.length;
  for(var i = 0; i < len - 1; i++){
    var idx = Math.floor(Math.random() * (len - i));
    var temp = arr[idx];
    arr[idx] = arr[len - i - 1];
    arr[len - i -1] = temp;
  }
  return arr;
}

在上面的算法里,我們每一次循環(huán)從前 len - i 個(gè)元素里隨機(jī)一個(gè)位置,將這個(gè)元素和第 len - i 個(gè)元素進(jìn)行交換,迭代直到 i = len - 1 為止。

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

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

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,809評(píng)論 1 45
  • Javascript有很多數(shù)組的方法,有的人有W3C的API,還可以去MDN上去找,但是我覺得API上說的不全,M...
    頑皮的雪狐七七閱讀 4,493評(píng)論 0 6
  • 排序算法說明 (1)排序的定義:對一序列對象根據(jù)某個(gè)關(guān)鍵字進(jìn)行排序; 輸入:n個(gè)數(shù):a1,a2,a3,…,an 輸...
    code武閱讀 745評(píng)論 0 0
  • 寶貝,你又玩到了凌晨,他們說小孩子的作息沿襲大人懷孕時(shí)的,所以媽媽也只能后悔自己當(dāng)時(shí)傻傻等你爸來微信,每天聊...
    我是漿糊閱讀 442評(píng)論 0 0
  • 昨夜做了一個(gè)夢, 夢里青草盛開,繁星點(diǎn)點(diǎn)。 你坐在我身邊, 我望著夜空, 就這么, 坐到了清晨。 有陽光灑下, 然...
    夏楚晨閱讀 208評(píng)論 0 7

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