>웹 프론트엔드 >JS 튜토리얼 >js_javascript 기술에서 세 가지 정렬 알고리즘 공유

js_javascript 기술에서 세 가지 정렬 알고리즘 공유

WBOY
WBOY원래의
2016-05-16 17:50:461227검색
코드 복사 코드는 다음과 같습니다.

/**
* 값 교환 연산
* arr 연산 중인 배열
* i 연산 중인 요소의 인덱스 값
* j 연산 중인 두 요소 사이의 거리
*/
함수 Refer(arr , i, j){
varchange = (arr[i] - arr[i - j]) < ? true: false, value
if (change) value; = arr[ i];
arr[i] = arr[i - j];
arr[i - j] = value
returnargs.callee(arr, i - j, j);
}
else {
return arr;
}
}
//Insertion sort
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;
}


위 부분은 삽입 정렬이고, 그 다음에는 힐 정렬:


//Hill sort
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] < array[j - i]) {
refer(array, j, i)
}
else {
continue; 🎜>}
}
return array;
}


두 메소드에 사용된 참조 메소드는 동일합니다. 마지막으로 병합 정렬:



코드 복사
코드는 다음과 같습니다. //병합 정렬 함수 순서(arr1, arr2){ var arrLong = arr1.length > arr2.length ? arr1 : arr2
var arrShort = arr1.length <= arr2.length ? 🎜>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()
계속
}
}
return arr ;
}


좋은 제안이 있는 학생은 메시지를 남겨주세요! 여기서 자세히 설명할 필요 없이 코드만 살펴보세요.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.