javascript數(shù)組排序匯總
更新時間:2015年07月07日 11:40:29 投稿:hebedich
本文給大家匯總了一下javascript的數(shù)組排序算法,包括冒泡排序、快速排序、插入排序、希爾排序,希望對大家熟悉javascript數(shù)組排序能夠有所幫助。
javascript數(shù)組排序匯總
//排序算法
window.onload = function(){
var array = [0,1,2,44,4,
324,5,65,6,6,
34,4,5,6,2,
43,5,6,62,43,
5,1,4,51,56,
76,7,7,2,1,
45,4,6,7,8];
//var array = [4,2,5,1,0,3];
console.log('原始數(shù)組');
console.log(array);
array = sorting.shellSort(array);
// alert(array);
console.log('排序后的數(shù)組')
console.log(array);
}
var sorting = {
//利用sort方法進行排序
systemSort: function(arr){
return arr.sort(function(a,b){
return a-b;
});
},
//冒泡排序
bubbleSort: function(arr){
var len=arr.length, tmp;
for(var i=0;i<len-1;i++){
for(var j=0;j<len-1-i;j++){
if(arr[j]>arr[j+1]){
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
return arr;
},
//快速排序
quickSort: function(arr){
var low=0, high=arr.length-1;
sort(low,high);
function sort(low, high){
if(low<high){
var mid = (function(low, high){
var tmp = arr[low];
while(low<high){
while(low<high&&arr[high]>=tmp){
high--;
}
arr[low] = arr[high];
while(low<high&&arr[low]<=tmp){
low++;
}
arr[high] = arr[low];
}
arr[low] = tmp;
return low;
})(low, high);
sort(low, mid-1);
sort(mid+1,high);
}
}
return arr;
},
//插入排序
insertSort: function(arr){
var len = arr.length;
for(var i=1;i<len;i++){
var tmp = arr[i];
for(var j=i-1;j>=0;j--){
if(tmp<arr[j]){
arr[j+1] = arr[j];
}else{
arr[j+1] = tmp;
break;
}
}
}
return arr;
},
//希爾排序
shellSort: function(arr){
var h = 1;
while(h<=arr.length/3){
h = h*3+1; //O(n^(3/2))by Knuth,1973
}
for( ;h>=1;h=Math.floor(h/3)){
for(var k=0;k<h;k++){
for(var i=h+k;i<arr.length;i+=h){
for(var j=i;j>=h&&arr[j]<arr[j-h];j-=h){
var tmp = arr[j];
arr[j] = arr[j-h];
arr[j-h] = tmp;
}
}
}
}
return arr;
}
}
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
您可能感興趣的文章:
相關文章
JavaScript獲取鼠標移動時的坐標(兼容IE8、chome谷歌、Firefox)
這篇文章主要介紹了JavaScript獲取鼠標移動時的坐標(兼容IE8、chome谷歌、Firefox瀏覽器),需要的朋友可以參考下2014-09-09
詳解JavaScript Alert函數(shù)執(zhí)行順序問題
本文主要介紹了Javascript的Alert函數(shù)執(zhí)行順序問題,對此感興趣的同學,可以實驗一下,以便解決平時遇到的一些奇怪的問題。2021-05-05
javascript中創(chuàng)建對象的幾種方法總結(jié)
以下幾種,是javascript中最常用的創(chuàng)建對象的方式。初學者看到后,可能會暈掉,甚至會覺得擔心。其實完全不用擔心,這些種方式,只需要掌握一兩種,對其他的幾種只需要理解就好了2013-11-11
JavaScript實現(xiàn)通過滑塊改變網(wǎng)頁顏色
這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)通過滑塊改變網(wǎng)頁顏色,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08
用JavaScrpt實現(xiàn)文件夾簡單輕松加密的實現(xiàn)方法圖文
電腦里經(jīng)常會存儲著重要文件,這些文件需要進行加密,有許多方法來實現(xiàn)。但如果想對一個文件夾里的所有文件都進行加密,數(shù)量少還可以,要是數(shù)量多豈不是得把人累死?2008-09-09
JavaScript實現(xiàn)輪播圖方法(邏輯清晰一看就懂)
這篇文章主要給大家介紹了關于JavaScript實現(xiàn)輪播圖方法的相關資料,JS輪播圖的實現(xiàn)核心是使用JavaScript來控制圖片的切換和顯示,配合HTML和CSS完成布局和樣式設置,文中介紹的方法邏輯清晰一看就懂,需要的朋友可以參考下2023-12-12

