js三種排序算法分享
更新時(shí)間:2012年08月16日 11:12:06 作者:
近來(lái)無(wú)聊,翻出來(lái)大學(xué)時(shí)候的數(shù)據(jù)結(jié)構(gòu)教材來(lái)看。突然想起,大學(xué)時(shí)候就想過(guò)用js實(shí)現(xiàn)基本的排序算法的事情,反正閑來(lái)無(wú)事,便寫(xiě)出來(lái)后記錄于此
復(fù)制代碼 代碼如下:
/**
* 值交換操作
* 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;
}
上面的部分是插入排序,然后是希爾排序:
復(fù)制代碼 代碼如下:
//希爾排序
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;
}
兩種方法當(dāng)中用到的refer方法為同一個(gè)方法。最后是歸并排序:
復(fù)制代碼 代碼如下:
//歸并排序
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;
}
有好建議的同學(xué)可以留言!在此不多余贅述了,一切看代碼吧。
您可能感興趣的文章:
- js交換排序 冒泡排序算法(Javascript版)
- 幾種經(jīng)典排序算法的JS實(shí)現(xiàn)方法
- js算法中的排序、數(shù)組去重詳細(xì)概述
- Javascript中的常見(jiàn)排序算法
- JS實(shí)現(xiàn)的冒泡排序,快速排序,插入排序算法示例
- JS隨機(jī)洗牌算法之?dāng)?shù)組隨機(jī)排序
- JavaScript數(shù)組排序的六種常見(jiàn)算法總結(jié)
- JS實(shí)現(xiàn)最簡(jiǎn)單的冒泡排序算法
- JS實(shí)現(xiàn)常見(jiàn)的查找、排序、去重算法示例
- 如何利用JavaScript實(shí)現(xiàn)排序算法淺析
相關(guān)文章
前端實(shí)現(xiàn)電子簽名的步驟及注意事項(xiàng)
本文詳細(xì)介紹了前端技術(shù)中電子簽名的實(shí)現(xiàn)方法,包括技術(shù)選型如HTML5?Canvas和SVG,以及實(shí)現(xiàn)步驟和數(shù)據(jù)安全措施,電子簽名確保了法律效力和數(shù)據(jù)的安全性,適用于多種文件簽署需求,需要的朋友可以參考下2024-11-11
Bootstrap頁(yè)面布局基礎(chǔ)知識(shí)全面解析
Bootstrap作為支持響應(yīng)式布局的一個(gè)前端插件,發(fā)揮著非常重要的作用,下面通過(guò)本文給大家介紹Bootstrap頁(yè)面布局基礎(chǔ)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-06-06
用Div仿showModalDialog模式菜單的效果的代碼
用Div仿showModalDialog模式菜單的效果的代碼...2007-03-03
js禁止Backspace鍵使瀏覽器后退的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇js禁止Backspace鍵使瀏覽器后退的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
javascript實(shí)現(xiàn)詳細(xì)時(shí)間提醒信息效果的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)詳細(xì)時(shí)間提醒信息效果的方法,涉及javascript操作時(shí)間的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
javascript解析json數(shù)據(jù)的3種方式
這篇文章主要介紹了解析json數(shù)據(jù)的3種方式,需要的朋友可以參考下2014-05-05

