설명
이 글은 주로 자기 수련을 위한 글이지 실제적인 의미는 없습니다.
각 브라우저 테스트에서 얻은 데이터는 다릅니다. 예를 들어 크롬을 사용하여 테스트했는데 일반적으로 퀵 정렬이 가장 빠른 반면, IE에서는 배열 길이에 따라 Hill이 가장 빠를 수도 있습니다.
버블 정렬을 테스트하는 데 너무 많은 데이터를 사용하지 마세요(브라우저가 충돌해도 상관없습니다)
관심이 있으시면
테스트 페이지를 다운로드 개인적 이해
버블 정렬: 가장 간단하고 느림, 길이가 7보다 작을 때 최적인 것 같습니다삽입 정렬: 버블보다 빠르고, 퀵 정렬과 힐보다 느림 정렬, 작은 데이터에는 장점이 있습니다
퀵 정렬: V8의 정렬 방법은 빠른 정렬과 삽입 정렬을 조합하여 사용합니다
힐 정렬: 크롬이 아닌 경우 배열 길이가 1000 미만인 경우. , Hill 정렬은 빠른 정렬보다 빠릅니다
시스템 방법: forfox에서 이 시스템 방법은 매우 빠릅니다
알고리즘 소스 코드
// ---------- 일부 정렬 알고리즘
// js 정렬을 위해 정렬 사용
systemSort:function(array) {
return array.sort(function(a, b){
return a - b;
}),
>// 버블 정렬
bubbleSort:function( array){
var i = 0, len = array.length,
j, d
for(; ifor(j=0; jif(array[i] < array[j]){
d = array[j]
array[j] = array[i];
array[i] = d;
}
}
return array;
},
// 빠른 정렬
함수(배열){
//var 배열 = [8,4,6,2,7,9,3,5,74,5]
//var 배열 = [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 stepi = i; // 기록 시작 위치
var stepj = j; 끝 위치
while(j > i) {
// j <<--------------- 앞으로 검색
if(array[j] > = 키){
j--;
}else{
배열[i] = 배열[j]
//i ------------>> ;뒤로 보기
while(j > ; i){
if(array[i] > key){
array[j] = array[i]
break;
}
}
}
// 처음 꺼낸 키가 가장 작은 숫자인 경우
if(stepi == i){
Sort( i, stepj); >return ;
}
// 키
array[i] = key
// 재귀
Sort(stepi, i); j, stepj);
Sort(i, j);
return array;
},
// 삽입 정렬
insertSort:function(array){
// http://baike.baidu.com/image/d57e99942da24e5dd21b7080
// http://baike.baidu.com/view/396887.htm
//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, step, key,
len = array.length
for(; i < len; i ){
step = j = i;
키 = 배열[j];
while(--j > -1){
if(array[j] > key){
배열[ j 1] = 배열[j];
}else{
break;
}
}
array[j 1] = key; 🎜>},
// 희망 정렬
//Jun.array.shellSort(Jun.array.df(10000))
shellSort:function(array){
// http:/ /zh.wikipedia.org/zh/ 힐 정렬
// var array = [13,14,94,33,82,25,59,94,65,23,45,27,73,25,39, 10];
var stepArr = [1750, 701, 301, 132, 57, 23, 10, 4, 1]; // reverse() 위키에서 이 최적의 단계 크기 더 작은 배열을 참조하세요
//var stepArr = [1031612713 , 217378076, 45806244, 9651787, 2034035, 428481, 90358, 19001, 4025, 836, 182, 34, 9, 1]//대형 배열에 대한 단계 선택
var i = 0 ;
var stepArrLeng th = stepArr.length;
var len = array.length;
var len2 = parsInt(len/2)
for(;i < stepArrLength; i ){
if(stepArr [i] > len2){
continue;
}
stepSort(stepArr[i])
}
// 한 단계씩 정렬
function stepSort(step)
//console.log(step) 사용된 단계 통계
var i = 0, j = 0, f, tem, key
var stepLen = len%step > ) 1: len/step;
for(;i < step; i ){// 열 순환
for(j=1;/*j < stepLen && */step * j i < ; j ){//각 열의 각 행을 차례로 반복합니다.
tem = f = step * j i
key = array[f]
while((tem-=step; ) >= 0){// 위쪽으로 순서대로 검색
if(array[tem] > key){
array[tem step] = array[tem]
}else{
break;
}
}
배열[항목 단계] = 키
}
}
}
배열 반환; 🎜>
테스트 코드 패키지 다운로드