JS 에서 실 현 된 계수 정렬 과 기수 정렬 알고리즘 예시
계수 정렬
계수 정렬 은 간단 한 통 정렬 입 니 다.한 통 은 배열 의 한 숫자 에 나타 나 는 개 수 를 대표 하기 때문에 배열 의 숫자 범위 와 같은 보조 배열 이 필요 합 니 다.보통 범위 가 100 보다 작은 정렬 에 사용 되 고 시간 복잡 도 는 O(n)이 며 공간 복잡 도 는 배열 의 숫자 범위 입 니 다.
/**
* start - end
* , , 100
*/
function countSort(arr, start, end) {
var len = arr.length;
//
var suportArr = new Array(end - start + 1);
//
var resArr = new Array(len);
//
for (i = 0; i < suportArr.length; i++) {
suportArr[i] = 0;
}
// , +1 +1
for (let i = 0; i < len; i++) {
suportArr[arr[i]]++;
}
// 1 , , 。
for (let i = 1; i < suportArr.length; i++) {
suportArr[i] += suportArr[i - 1];
}
// ,
for (let i = len - 1; i >= 0; i--) {
resArr[suportArr[arr[i]] - 1] = arr[i];
suportArr[arr[i]]--;
}
return resArr;
}
기수 정렬기수 정렬 은 많이 누 워 있 는 통 정렬 입 니 다.
var radix = 16; // , , , , 。
function _roundSort(arr, round, radix) {
var buckets = new Array(radix);
for (let i = 0; i < radix; i++) {
buckets[i] = [];
}
//
for (let i = 0; i < arr.length; i++) {
let remainder = Math.floor(arr[i] / (radix ** (round - 1))) % radix;
buckets[remainder].push(arr[i]);
}
//
var index = 0;
for (let i = 0; i < buckets.length; i++) {
for (let j = 0; j < buckets[i].length; j++) {
arr[index++] = buckets[i][j];
}
}
}
function radixSort(arr, round) {
for (let i = 1; i <= round; i++) {
_roundSort(arr, i, radix);
}
return arr;
}
console.log(radixSort([10,5,5,50,0,155,4622,5,1,4,2154], 4));
PS:정렬 에 관 한 프 리 젠 테 이 션 도 구 를 추천 합 니 다.참고 하 시기 바 랍 니 다.온라인 애니메이션 프레젠테이션 삽입/선택/거품/병합/힐/빠 른 정렬 알고리즘 프로 세 스 도구:
http://tools.jb51.net/aideddesign/paixu_ys
자 바스 크 립 트 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 판단 수조 네 가지 실현 방법 상세그러면 본고는 주로 몇 가지 판단 방식과 방식 판단의 원리를 바탕으로 문제가 있는지 토론하고자 한다. 예를 들어 html에 여러 개의 iframe 대상이 있으면 instanceof의 검증 결과가 기대에 부합되지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.