>웹 프론트엔드 >JS 튜토리얼 >자바스크립트 정렬 알고리즘 계산 ​​정렬 example_javascript 기술

자바스크립트 정렬 알고리즘 계산 ​​정렬 example_javascript 기술

WBOY
WBOY원래의
2016-05-16 16:53:071250검색

카운팅 정렬은 안정적인 정렬 알고리즘입니다. 카운팅 정렬은 추가 배열 Count_arr을 사용합니다. 여기서 i번째 요소는 정렬할 Arr 배열에서 값이 i와 동일한 요소 수입니다. 그런 다음 Arr의 요소를 Count_arr 배열에 따라 올바른 위치에 정렬합니다.
은 4단계로 나뉩니다.
1. 정렬할 배열에서 가장 큰 요소와 가장 작은 요소를 찾습니다.
2. 배열에서 값이 i인 각 요소의 발생 횟수를 계산하여 array Count_arr 항목 i
3. 모든 개수를 누적합니다(Count_arr의 첫 번째 요소부터 시작하여 각 항목을 이전 항목에 추가)
4. 원래 배열을 역순으로 탐색합니다. 각 요소를 추가합니다. (i)새 배열의 번째 항목, 각 요소에 대해 Count_arr(i)에서 1을 뺍니다.

예:

코드 복사 코드는 다음과 같습니다:

/**
* 카운팅 정렬은 비비교 기반 정렬 알고리즘입니다.
* 이 알고리즘은 Harold H. Seward가 1954년에 제안했습니다.
* 장점은 특정 범위 내에서 정수를 정렬할 때
* 복잡도가 Ο(n k)(여기서 k는 정수의 범위)입니다.
* 어떤 비교 정렬 알고리즘보다 빠릅니다.
*
*/

function countSort(arr, min, max) {
var i , z = 0, 개수 = [];

for (i = min; i <= max; i ) {
count[i] = 0;
}

for (i=0; i < arr.length; i ) {
count[arr[i]] ;
}

for (i = min; i <= max; i ) {
while (count[i]-- > 0) {
arr[z ] = i;
}
}
return arr;
}

// 테스트

var i, arr = [];

for (i = 0; i arr.push(Math.floor ( Math.random() * (141)));
}

countSort(arr, 0, 140);
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.