JS 배열 정렬 기법 집합 (거품, sort, 빠 른, 힐 등 정렬)

3787 단어
본 논문 의 사례 는 JS 배열 의 정렬 기 교 를 총 결 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다. 구체 적 으로 는 다음 과 같 습 니 다.
① 거품 정렬

bubbleSort:function(array){
var i = 0, len = array.length, j, d; for(; i 
 

② js 정렬

systemSort:function(array)
{ return array.sort(function(a, b)
{ return a - b; }); 
}


③ 빠 른 정렬

quickSort:function(array)
{ //var array = [8,4,6,2,7,9,3,5,74,5]; //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]; 
var i = 0; var j = array.length - 1; var Sort = function(i, j){ 
//      
if(i == j ){ return }; var key = array[i]; var tempi = i;
//        var tempj = j; //        
while(j > i){ 
// j <= key){ j--; }
else{ 
array[i] = array[j] //i++ ------------>>     
while(j > ++i){ if(array[i] > key){ 
array[j] = array[i]; break; 
} 
} 
} 
} //          key       
if(tempi == i){ 
Sort(++i, tempj); return ; 
} 
//          
key array[i] = key; 
//    Sort(tempi, i); 
Sort(j, tempj); } Sort(i, j); 
return array; 
}


④ 힐 정렬

//Jun.array.shellSort(Jun.array.df(10000)); 
shellSort:function(array){
// var array = [13,14,94,33,82,25,59,94,65,23,45,27,73,25,39,10]; 
var tempArr = [1750, 701, 301, 132, 57, 23, 10, 4, 1]; 
// reverse()                    
//var tempArr = [1031612713, 217378076, 45806244, 9651787, 2034035, 428481, 90358, 19001, 4025, 836, 182, 34, 9, 1] 
//           
var i = 0; var tempArrtempArrLength = tempArr.length; var len = array.length; var len2 = parseInt(len/2); for(;i < tempArrLength; i++){ 
if(tempArr[i] > len2){ continue; } tempSort(tempArr[i]); 
} 
//        
function tempSort(temp){
//console.log(temp)         
var i = 0, j = 0, f, tem, key; 
var tempLen = len%temp > 0 ? parseInt(len/temp) + 1 : len/temp; 
for(;i < temp; i++){
//       
for(j=1;/*j < tempLen && */temp * j + i < len; j++){ 
//          
tem = f = temp * j + i; key = array[f]; 
while((tem-=temp) >= 0){ 
//        
if(array[tem] > key){
array[tem+temp] = array[tem]; 
}else{ break; 
} 
} array[tem + temp ] = key; 
} 
} 
} return array;
}


⑤ 정렬 삽입

insertSort:function(array){
/ /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]; 
var i = 1, j, temp, key, len = array.length; 
for(; i < len; i++){ 
temp = j = i; key = array[j]; while(--j > -1){ 
if(array[j] > key){ array[j+1] = array[j]; }else{ break; 
} 
}
array[j+1] = key; 
} return array; 
}


첨부: js 의 배열 (Array) 정렬 (sort) 주의사항

var arrDemo = new Array();
arrDemo[0] = 10;
arrDemo[1] = 50;
arrDemo[2] = 51;
arrDemo[3] = 100;
arrDemo.sort(); //  sort   ,        ,      
alert(arrDemo);//10,100,50,51      sort    ascii       ,              
arrDemo.sort(function(a,b){return a>b?1:-1});//      
alert(arrDemo);//10,50,51,100
arrDemo.sort(function(a,b){return a 
 

결론:
1. 배열 이 sort 방법 을 호출 하면 그 자체 (새 배열 을 만 드 는 것 이 아니 라) 에 영향 을 줄 수 있 습 니 다. 2. sort () 방법 은 기본적으로 문자 로 정렬 되 기 때문에 디지털 배열 을 정렬 할 때 숫자 크기 로 정렬 할 것 이 라 고 생각 할 수 없습니다!3. 기본 sort 행동 을 바 꾸 려 면 정렬 규칙 함 수 를 스스로 지정 할 수 있 습 니 다 (예 를 들 어)
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기