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

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è)計有所幫助。

相關(guān)文章

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

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

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

    再論Javascript的類繼承

    說到Javascript的類繼承,就必然離不開原型鏈,但只通過原型鏈實現(xiàn)的繼承有著不少缺陷。
    2011-03-03
  • D3.js封裝文本實現(xiàn)自動換行和旋轉(zhuǎn)平移等功能

    D3.js封裝文本實現(xiàn)自動換行和旋轉(zhuǎn)平移等功能

    之前小編和大家分享了SVG中如何配合使用text和tspan來實現(xiàn)換行的功能,所以這篇文章對此功能進行一下封裝,以后就可以直接用了。有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-10-10
  • 微信小程序?qū)崿F(xiàn)選項卡功能

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

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

    一文讀懂ES7中的javascript修飾器

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

    JavaScript識別網(wǎng)頁關(guān)鍵字并進行描紅的方法

    這篇文章主要介紹了JavaScript識別網(wǎng)頁關(guān)鍵字并進行描紅的方法,通過字符串的遍歷、匹配及動態(tài)添加等操作實現(xiàn)識別與描紅的功能,非常簡單實用,需要的朋友可以參考下
    2015-11-11
  • js校驗開始時間和結(jié)束時間

    js校驗開始時間和結(jié)束時間

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

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

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

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

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

    JS面試必備之如何實現(xiàn)一個精確的倒計時

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

最新評論