JavaScript 정렬 알고리즘 구현
8047 단어 JavaScript
정렬 알고리즘 은 필기시험 에서 자주 나타 나 는 것 으로 정렬 알고리즘 을 제기 할 때 반드시 알고리즘 의 복잡 도와 대 O 표현법 을 제시 해 야 한다. 문장 알고리즘 의 복잡 도와 대 O 표현법 을 참고 할 수 있다.
거품 정렬
거품 정렬 의 공간 복잡 도 는 0 (n) 이다.²) 。실행 시간 으로 볼 때 거품 정렬 은 정렬 알고리즘 중 가장 효율 이 떨 어 지 는 것 입 니 다. 거품 정렬 은 두 개의 인접 한 항목 을 비교 하 는 것 입 니 다. 첫 번 째 가 두 번 째 보다 크 면 교환 합 니 다. 요 소 를 올 바른 순서 로 위로 이동 하면 기포 가 표면 으로 올 라 가 는 것 처럼 거품 정렬 이 되 어 이름 을 얻 었 습 니 다.
function bubbleSort(arr) {
for (let i = 0; i < arr.length - 1; i++) {
for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr, j, j + 1)
}Ï
}
}
}
정렬 선택
정렬 의 복잡 도 를 O (n 으로 선택 하 십시오.²)。정렬 을 선택 하 는 것 은 거품 정렬 과 마찬가지 로 장 착 된 두 순환 을 포함 하여 2 차 측의 복잡 도 를 초래 합 니 다. 정렬 알고리즘 을 선택 하 는 것 은 원래 의 주소 비교 정렬 알고리즘 입 니 다. 정렬 을 선택 하 는 것 은 대체적으로 데이터 구조 에서 가장 작은 값 을 찾 아 첫 번 째 에 두 는 것 입 니 다. 이 어 두 번 째 작은 값 을 찾 아 두 번 째 에 두 는 것 입 니 다.
function swap(arr, a, b) {
let temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
return arr
}
function selectSort(arr) {
for (let i = 0; i < arr.length - 1; i++) {
let min = arr[i];
let minIndex = i;
for (let j = i; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
swap(arr, i, minIndex)
}
}
삽입 정렬
정렬 알고리즘 을 삽입 하 는 복잡 도 는 O (n) 입 니 다.²) 。정렬 할 때마다 배열 항목 을 삽입 하여 마지막 정렬 배열 을 구축 합 니 다. 정렬 의 핵심 사상 은 부분 적 으로 변 합 니 다. 작은 배열 을 정렬 할 때 이 알고리즘 은 정렬 과 거품 정렬 을 선택 하 는 것 보다 성능 이 좋 습 니 다.
function insertSort(arr) {
var len = arr.length;
var j, temp;
for (var i = 1; i < len; i++) {
j = i;
temp = arr[i];
while (i > 0 && arr[j - 1] > temp) {
arr[j] = arr[j - 1];
j--;
}
arr[j] = temp
}
return arr;
}
빠 른 정렬
빠 른 정렬 시간 복잡 도 는 O (nlog ^ n) 이 며 성능 이 좋 습 니 다. 빠 른 정렬 은 분할 방법 으로 원본 배열 을 작은 배열 로 나 눕 니 다.
function quickArr(arr) {
if (arr.length <= 1) {
return arr;
}
var left = [],
right = [];
var pIndex = Math.floor(arr.length / 2);
var p = arr.splice(pIndex, 1)[0];
for (var i = 0; i < arr.length; i++) {
if (arr[i] <= p) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
//
return quickArr(left).concat([p], quickArr(right));
}
힐 정렬
힐 정렬 은 정렬 을 삽입 하 는 효율 적 인 개선 판 이다.
이상 은 비교적 중요 하고 면접 에서 흔히 볼 수 있 는 몇 가지 정렬 알고리즘 입 니 다.
정렬
더미 정렬
계수 정렬
통 정렬
기수 정렬 (분산 정렬)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.