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

JS折半插入排序算法實例

 更新時間:2015年12月02日 16:27:49   作者:lsjlnd  
這篇文章主要介紹了JS折半插入排序算法,以完整實例形式較為詳細(xì)的分析了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)文章

最新評論

琼中| 四子王旗| 衡南县| 中西区| 齐河县| 平昌县| 瑞昌市| 大同市| 方城县| 榆树市| 万山特区| 桐城市| 土默特左旗| 高州市| 丽水市| 文水县| 商丘市| 合水县| 夏邑县| 通化市| 青铜峡市| 剑阁县| 定日县| 大丰市| 东莞市| 青铜峡市| 新巴尔虎左旗| 伊宁市| 塔河县| 青川县| 洪雅县| 达州市| 泸州市| 资阳市| 屯门区| 化德县| 潜山县| 紫金县| 衡山县| 苍南县| 中西区|