摘要:不斷從原數組中隨機取一個元素放進新數組,同時刪除原數組中該值,遞歸重復至全部取出。相當于遞歸退出
//不斷從原數組中隨機取一個元素放進新數組,同時刪除原數組中該值,遞歸重復至全部取出。 function randomSort(arr, newArr) { var newArr = newArr || [] if (arr.length == 1) { newArr.push(arr[0]) return newArr; // 相當于遞歸退出 } var random = Math.ceil(Math.random() * arr.length) - 1 newArr.push(arr[random]) arr.splice(random, 1) return randomSort(arr, newArr) } randomSort([1, 2, 3, 4, 5, 6, 7]); //[2, 3, 1, 5, 6, 7, 4] randomSort([1, 2, 3, 4, 5, 6, 7]); //[3, 4, 2, 5, 1, 6, 7]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/84594.html
摘要:源碼地址為了簡化篇幅,我們對這個數組進行分析,數組長度為,此時采用的是插入排序。插入排序的源碼是其原理在于將第一個元素視為有序序列,遍歷數組,將之后的元素依次插入這個構建的有序序列中。 JavaScript 專題系列第十九篇,講解數組亂序,重點探究 Math.random() 為什么不能真正的亂序? 亂序 亂序的意思就是將數組打亂。 嗯,沒有了,直接看代碼吧。 Math.random ...
摘要:準備面試,多看點題。來自雨夜帶刀需求描述從一組有序的數據中生成一組隨機并且不重復的數,類似于簡單的抽獎程序的實現。 (準備面試,多看點題。來自雨夜帶刀s Blog) 需求描述:從一組有序的數據中生成一組隨機并且不重復的數,類似于簡單的抽獎程序的實現。 先來生成一個有序的數組: var arr = [], length = 100, i = 0; for( ; i < length;...
摘要:代碼實現代碼一測試用例輸出其中,代碼二測試用例輸出其中,參考資料洗牌算法學習筆記數組隨機排序洗牌算法給數組隨機排序洗牌算法原理 原理及步驟 1.定義一個數組(shuffled),長度(length)是原數組(arr)長度2.取 0 到 index (初始0) 隨機值 rand, shuffled[index] = shuffled[rand], shuffled[rand] = arr...
摘要:數組元素甚至可以是對象或其它數組。它執行的是淺拷貝,這意味著如果數組元素是對象,兩個數組都指向相同的對象,對新數組中的對象修改,會在舊的數組的相同對象中反應出來。 JS中的數組是弱類型的,數組中可以含有不同類型的元素。數組元素甚至可以是對象或其它數組。JS引擎一般會優化數組,按索引訪問數組常常比訪問一般對象屬性明顯迅速。數組長度范圍 from 0 to 4,294,967,295(2^...
摘要:今天我們來討論的問題有兩個如何用實現選擇排序冒泡排序插入排序快速排序歸并排序堆排序對生成的萬個隨機數進行排序,各個排序算法的性能分析。快速排序快速排序算法基本上是面試必考排序算法,也是傳聞最好用的算法。 今天我們來討論的問題有兩個: 如何用JavaScript實現選擇排序、冒泡排序、插入排序、快速排序、歸并排序、堆排序; 對生成的10萬個隨機數進行排序,各個排序算法的性能分析。 創...
閱讀 1436·2021-09-02 19:23
閱讀 1586·2021-08-11 11:19
閱讀 641·2019-08-30 15:55
閱讀 1653·2019-08-30 12:50
閱讀 2241·2019-08-30 11:23
閱讀 2180·2019-08-29 13:13
閱讀 1500·2019-08-28 18:13
閱讀 3344·2019-08-26 11:53