最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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í),返回最開始位置
    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)文章

最新評(píng)論

策勒县| 湖南省| 通江县| 高清| 绵阳市| 永登县| 城固县| 博兴县| 福州市| 涿鹿县| 玉门市| 三台县| 肥西县| 九龙城区| 紫阳县| 若羌县| 九台市| 麟游县| 邵阳县| 阿克| 辽中县| 罗山县| 北票市| 当阳市| 龙海市| 周宁县| 车险| 行唐县| 潮安县| 华阴市| 容城县| 五峰| 农安县| 焦作市| 三台县| 开远市| 胶州市| 论坛| 焦作市| 宜都市| 翁牛特旗|