欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS折半插入排序算法實(shí)例

 更新時(shí)間:2015年12月02日 16:27:49   作者:lsjlnd  
這篇文章主要介紹了JS折半插入排序算法,以完整實(shí)例形式較為詳細(xì)的分析了JavaScript實(shí)現(xiàn)折半插入排序的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(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ì)有所幫助。

相關(guān)文章

  • 微信小程序?qū)崿F(xiàn)手寫(xiě)簽名

    微信小程序?qū)崿F(xiàn)手寫(xiě)簽名

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)手寫(xiě)簽名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 再論Javascript的類(lèi)繼承

    再論Javascript的類(lèi)繼承

    說(shuō)到Javascript的類(lèi)繼承,就必然離不開(kāi)原型鏈,但只通過(guò)原型鏈實(shí)現(xiàn)的繼承有著不少缺陷。
    2011-03-03
  • D3.js封裝文本實(shí)現(xiàn)自動(dòng)換行和旋轉(zhuǎ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-10
  • 微信小程序?qū)崿F(xiàn)選項(xiàng)卡功能

    微信小程序?qū)崿F(xiàn)選項(xiàng)卡功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)選項(xiàng)卡功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 一文讀懂ES7中的javascript修飾器

    一文讀懂ES7中的javascript修飾器

    這篇文章主要給大家介紹了關(guān)于ES7中javascript修飾器的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ES7具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • JavaScript識(shí)別網(wǎng)頁(yè)關(guān)鍵字并進(jìn)行描紅的方法

    JavaScript識(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-11
  • js校驗(yàn)開(kāi)始時(shí)間和結(jié)束時(shí)間

    js校驗(yàn)開(kāi)始時(shí)間和結(jié)束時(shí)間

    這篇文章主要為大家詳細(xì)介紹了js校驗(yàn)開(kāi)始結(jié)束時(shí)間,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 小程序如何定位所在城市及發(fā)起周邊搜索

    小程序如何定位所在城市及發(fā)起周邊搜索

    這篇文章主要介紹了小程序如何定位所在城市及發(fā)起周邊搜索,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 淺析showModalDialog數(shù)據(jù)緩存問(wèn)題(用禁止瀏覽器緩存解決)

    淺析showModalDialog數(shù)據(jù)緩存問(wèn)題(用禁止瀏覽器緩存解決)

    在使用showModalDialog彈出窗口時(shí),顯示的數(shù)據(jù)是上次修改前的數(shù)據(jù),這是因?yàn)槟J(rèn)情況下頁(yè)面保存了緩存,所以顯示的數(shù)據(jù)并不是修改后的情況
    2013-07-07
  • JS面試必備之如何實(shí)現(xiàn)一個(gè)精確的倒計(jì)時(shí)

    JS面試必備之如何實(shí)現(xiàn)一個(gè)精確的倒計(jì)時(shí)

    又到了金三銀四的季節(jié)了,面試的各位同學(xué)要開(kāi)始準(zhǔn)備起來(lái)了,今天主要分享一個(gè)在面試中經(jīng)常被提到的一個(gè)面試題:倒計(jì)時(shí),希望對(duì)大家有所幫助
    2024-03-03

最新評(píng)論