Heim >Web-Frontend >js-Tutorial >js三种排序算法分享_javascript技巧

js三种排序算法分享_javascript技巧

WBOY
WBOYOriginal
2016-05-16 17:50:461225Durchsuche
复制代码 代码如下:

/**
* 值交换操作
* arr 被操作的数组
* i 被操作元素索引值
* j 被操作两元素的距离
*/
function refer(arr, i, j){
var change = (arr[i] - arr[i - j]) 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 if (array[i] 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 if (array[j] 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 var arr = [];
for (var i = 0, l = arrShort.length; i for (var j = 0, len = arrLong.length; j if (arrShort[i] arr.push(arrShort[i]);
if (i == l - 1) {
for (var m = 0, n = arrLong.length; m     arr[arr.length] = arrLong[m];
     }
      }
      break;
    }
else {
arr.push(arrLong[j]);
arrLong.shift();
continue;
}
}
}
return arr;
}

有好建议的同学可以留言!在此不多余赘述了,一切看代码吧。
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn