정렬 알고리즘을 이해하자.
정렬 알고리즘을 JAVASCRIPT로 구현
정렬 알고리즘의 시간복잡도
삽입정렬은 이전수들이 자신보다 크면 해당자리에 삽입되는 정렬방법이다.
const arr = [6, 3, 5, 2, 4, 1, 7]; //정렬하기 전 배열
//삽입정렬
function insertsort(arr) {
let i = 1,
j,
temp;
//배열의 2번째 수부터 비교시작
for (i = 1; i < arr.length; i++) {
temp = arr[i];
//선택된 수보다 이전 숫자들과 비교.
for (j = i - 1; j >= 0 && temp < arr[j]; j--) {
arr[j + 1] = arr[j];
}
arr[j + 1] = temp;
}
return arr;
}
insertsort(arr); //[1,2,3,4,5,6,7]
버블정렬은 자신과 바로 다음수와 비교하여 다음수가 값이 더 작다면 자리를 바꾸는 정렬방법
const arr = [6, 3, 5, 2, 4, 1, 7]; //정렬하기 전 배열
//버블정렬
function bubbleSort(arr) {
let temp;
for (let i = 0; i < arr.length; i++) {
//앞뒤비교, arr.length -1 -i를 해준 이유는 정렬이후 마지막수는 최대값이 되기때문에 비교를 해줄필요가 없다.
for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
bubbleSort(arr); //[1,2,3,4,5,6,7]
선택정렬은 가장 작은수를 찾아서 맨앞으로 옮겨주는 정렬 방법이다.
const arr = [6, 3, 5, 2, 4, 1, 7]; //정렬하기 전 배열
//선택정렬
function selectSort(arr) {
let i, j, temp, minIndex;
for (i = 0; i < arr.length - 1; i++) {
minIndex = i;
for (j = i + 1; j < arr.length; j++) {
//최소값 index찾기
if (arr[minIndex] > arr[j]) minIndex = j;
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
selectSort(arr); //[1,2,3,4,5,6,7]
시간복잡도란?
알고리즘이 문제해결을 하는데에 걸리는 시간.
3가지의 시간복잡도가 존재
1)최선의 경우
2)최악의 경우
3)평균적인 경우
시간복잡도 순서(커질수록 안좋은 케이스)
버블,삽입,선택 정렬의 시간복잡도
평균 시간복잡도는 동일하지만 최선의 경우 삽입정렬이 가장 빠르다.