JS折半插入排序算法實(shí)例
本文實(shí)例講述了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í)數(shù)組,存儲(chǔ)已排序項(xiàng) function getSortTmpIndex(subArr, num) { var len = subArr.length; if(0 == len) return 0; // 當(dāng)數(shù)組為空時(shí),返回最開(kāi)始位置 var cpmIndex = Math.ceil(len / 2); // 計(jì)算中間元素所在位置 if(cpmIndex > len - 1) cpmIndex = len - 1; if(num == subArr[cpmIndex]) { // 相等時(shí)直接返回 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);
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JS實(shí)現(xiàn)冒泡排序,插入排序和快速排序并排序輸出
- js排序動(dòng)畫(huà)模擬-插入排序
- javascript算法學(xué)習(xí)(直接插入排序)
- javascript數(shù)據(jù)結(jié)構(gòu)之雙鏈表插入排序?qū)嵗斀?/a>
- JavaScript插入排序算法原理與實(shí)現(xiàn)方法示例
- JavaScript實(shí)現(xiàn)經(jīng)典排序算法之插入排序
- JS排序算法之冒泡排序,選擇排序與插入排序?qū)嵗治?/a>
- JavaScript實(shí)現(xiàn)鏈表插入排序和鏈表歸并排序
- JS實(shí)現(xiàn)的冒泡排序,快速排序,插入排序算法示例
- 基于JavaScript實(shí)現(xiàn)的插入排序算法分析
- JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之基本排序算法定義與效率比較【冒泡、選擇、插入排序】
- JS插入排序簡(jiǎn)單理解與實(shí)現(xiàn)方法分析
相關(guān)文章
D3.js封裝文本實(shí)現(xiàn)自動(dòng)換行和旋轉(zhuǎn)平移等功能
之前小編和大家分享了SVG中如何配合使用text和tspan來(lái)實(shí)現(xiàn)換行的功能,所以這篇文章對(duì)此功能進(jìn)行一下封裝,以后就可以直接用了。有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-10-10JavaScript識(shí)別網(wǎng)頁(yè)關(guān)鍵字并進(jìn)行描紅的方法
這篇文章主要介紹了JavaScript識(shí)別網(wǎng)頁(yè)關(guān)鍵字并進(jìn)行描紅的方法,通過(guò)字符串的遍歷、匹配及動(dòng)態(tài)添加等操作實(shí)現(xiàn)識(shí)別與描紅的功能,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-11-11js校驗(yàn)開(kāi)始時(shí)間和結(jié)束時(shí)間
這篇文章主要為大家詳細(xì)介紹了js校驗(yàn)開(kāi)始結(jié)束時(shí)間,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05淺析showModalDialog數(shù)據(jù)緩存問(wèn)題(用禁止瀏覽器緩存解決)
在使用showModalDialog彈出窗口時(shí),顯示的數(shù)據(jù)是上次修改前的數(shù)據(jù),這是因?yàn)槟J(rèn)情況下頁(yè)面保存了緩存,所以顯示的數(shù)據(jù)并不是修改后的情況2013-07-07JS面試必備之如何實(shí)現(xiàn)一個(gè)精確的倒計(jì)時(shí)
又到了金三銀四的季節(jié)了,面試的各位同學(xué)要開(kāi)始準(zhǔn)備起來(lái)了,今天主要分享一個(gè)在面試中經(jīng)常被提到的一個(gè)面試題:倒計(jì)時(shí),希望對(duì)大家有所幫助2024-03-03