JS折半插入排序算法實例
更新時間:2015年12月02日 16:27:49 作者:lsjlnd
這篇文章主要介紹了JS折半插入排序算法,以完整實例形式較為詳細的分析了JavaScript實現(xiàn)折半插入排序的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了JS折半插入排序算法。分享給大家供大家參考,具體如下:
function pushArrayWithIndex(arr, index, value) { // 將元素添加到數(shù)組的指定位置 var temArr = arr.slice(0, index); temArr.push(value); return temArr.concat(arr.slice(index)); } /* test for pushArrayWithIndex var arr = [1, 2, 3, 4, 5]; arr = pushArrayWithIndex(arr, 1, 9); console.log(arr);*/ function sortInsert(arr) { // 插入排序 var temArr = []; // 臨時數(shù)組,存儲已排序項 function getSortTmpIndex(subArr, num) { var len = subArr.length; if(0 == len) return 0; // 當(dāng)數(shù)組為空時,返回最開始位置 var cpmIndex = Math.ceil(len / 2); // 計算中間元素所在位置 if(cpmIndex > len - 1) cpmIndex = len - 1; if(num == subArr[cpmIndex]) { // 相等時直接返回 return cpmIndex; } if(num > subArr[cpmIndex]) { // 向后折半查找 cpmIndex++; return cpmIndex + getSortTmpIndex(subArr.slice(cpmIndex), num); } if(num < subArr[cpmIndex]) { // 向前折半查找 return getSortTmpIndex(subArr.slice(0, cpmIndex), num); } } for (var i in arr) { var index = getSortTmpIndex(temArr, arr[i]); // 查找arr[i]在temArr中的位置 console.log('index:', index, ' num:', arr[i], ' arr:', temArr); temArr = pushArrayWithIndex(temArr, index, arr[i]); // 將元素插入到查找位置 } return temArr; } var arr = [3, 7, 6, 5, 9, 1, 2, 3, 1, 7, 4]; console.log(arr); arr = sortInsert(arr); console.log(arr);
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
您可能感興趣的文章:
- JS實現(xiàn)冒泡排序,插入排序和快速排序并排序輸出
- js排序動畫模擬-插入排序
- javascript算法學(xué)習(xí)(直接插入排序)
- javascript數(shù)據(jù)結(jié)構(gòu)之雙鏈表插入排序?qū)嵗斀?/a>
- JavaScript插入排序算法原理與實現(xiàn)方法示例
- JavaScript實現(xiàn)經(jīng)典排序算法之插入排序
- JS排序算法之冒泡排序,選擇排序與插入排序?qū)嵗治?/a>
- JavaScript實現(xiàn)鏈表插入排序和鏈表歸并排序
- JS實現(xiàn)的冒泡排序,快速排序,插入排序算法示例
- 基于JavaScript實現(xiàn)的插入排序算法分析
- JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之基本排序算法定義與效率比較【冒泡、選擇、插入排序】
- JS插入排序簡單理解與實現(xiàn)方法分析
相關(guān)文章
D3.js封裝文本實現(xiàn)自動換行和旋轉(zhuǎn)平移等功能
之前小編和大家分享了SVG中如何配合使用text和tspan來實現(xiàn)換行的功能,所以這篇文章對此功能進行一下封裝,以后就可以直接用了。有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-10-10JavaScript識別網(wǎng)頁關(guān)鍵字并進行描紅的方法
這篇文章主要介紹了JavaScript識別網(wǎng)頁關(guān)鍵字并進行描紅的方法,通過字符串的遍歷、匹配及動態(tài)添加等操作實現(xiàn)識別與描紅的功能,非常簡單實用,需要的朋友可以參考下2015-11-11淺析showModalDialog數(shù)據(jù)緩存問題(用禁止瀏覽器緩存解決)
在使用showModalDialog彈出窗口時,顯示的數(shù)據(jù)是上次修改前的數(shù)據(jù),這是因為默認情況下頁面保存了緩存,所以顯示的數(shù)據(jù)并不是修改后的情況2013-07-07