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

js三種排序算法分享

 更新時間:2012年08月16日 11:12:06   作者:  
近來無聊,翻出來大學時候的數(shù)據(jù)結(jié)構(gòu)教材來看。突然想起,大學時候就想過用js實現(xiàn)基本的排序算法的事情,反正閑來無事,便寫出來后記錄于此
復制代碼 代碼如下:

/**
* 值交換操作
* arr 被操作的數(shù)組
* i 被操作元素索引值
* j 被操作兩元素的距離
*/
function refer(arr, i, j){
var change = (arr[i] - arr[i - j]) < 0 ? true : false, value;
if (change) {
value = arr[i];
arr[i] = arr[i - j];
arr[i - j] = value;
return arguments.callee(arr, i - j, j);
}
else {
return arr;
}
}
//插入排序
function insert(array){
for (var i = 1, len = array.length; i < len; i++) {
if (array[i] < array[i - 1]) {
refer(array, i, 1);
}
}
return array;
}

上面的部分是插入排序,然后是希爾排序:
復制代碼 代碼如下:

//希爾排序
function shell(array){
var length = array.length, value;
for (var i = Math.floor(length / 2); i > 0; i = Math.floor(i / 2)) {
for (var j = i; j < length; j++) {
if (array[j] < array[j - i]) {
refer(array, j, i);
}
else {
continue;
}
}
}
return array;
}

兩種方法當中用到的refer方法為同一個方法。最后是歸并排序:
復制代碼 代碼如下:

//歸并排序
function order(arr1, arr2){
var arrLong = arr1.length > arr2.length ? arr1 : arr2;
var arrShort = arr1.length <= arr2.length ? arr1 : arr2
var arr = [];
for (var i = 0, l = arrShort.length; i < l; i++) {
for (var j = 0, len = arrLong.length; j < len; j++) {
if (arrShort[i] < arrLong[j]) {
arr.push(arrShort[i]);
if (i == l - 1) {
for (var m = 0, n = arrLong.length; m < n; m++) {
    arr[arr.length] = arrLong[m];
     }
      }
      break;
    }
else {
arr.push(arrLong[j]);
arrLong.shift();
continue;
}
}
}
return arr;
}

有好建議的同學可以留言!在此不多余贅述了,一切看代碼吧。

相關文章

最新評論

东乌珠穆沁旗| 高邑县| 岐山县| 荔波县| 朝阳区| 达州市| 邻水| 德格县| 台南市| 若羌县| 东丽区| 长白| 纳雍县| 墨脱县| 龙州县| 古交市| 马边| 阿拉善盟| 嘉定区| 霍林郭勒市| 荥阳市| 敦化市| 响水县| 肃南| 贵德县| 宝丰县| 木兰县| 萝北县| 彭水| 永泰县| 西乌珠穆沁旗| 鄂伦春自治旗| 武安市| 绩溪县| 仁怀市| 河曲县| 岑溪市| 榆中县| 绥化市| 东源县| 台湾省|