Algorithm/μΈνλ°(inflearn)
[JavaScript/section 7] 01 - μ ν μ λ ¬
_μ±νΈ_
2022. 9. 29. 14:27
728x90
λ°μν
π λ¬Έμ
Nκ°μ μ«μκ° μ λ ₯λλ©΄ μ€λ¦μ°¨μμΌλ‘ μ λ ¬νμ¬ μΆλ ₯νλ λ¬Έμ μ΄λ€. μ λ ¬νλ λ°©λ²μ μ ν μ λ ¬μ΄λ€.
π§ μ ν μ λ ¬μ΄λ 무μμΌκΉ?
- μ μ리 μ λ ¬(in-place sorting) μκ³ λ¦¬μ¦μ νλ
- μ λ ₯ λ°°μ΄(μ λ ¬λμ§ μμ κ°λ€) μ΄μΈμ λ€λ₯Έ μΆκ° λ©λͺ¨λ¦¬λ₯Ό μꡬνμ§ μλ μ λ ¬ λ°©λ²
- ν΄λΉ μμμ μμλ₯Ό λ£μ μμΉλ μ΄λ―Έ μ ν΄μ Έ μκ³ , μ΄λ€ μμλ₯Ό λ£μμ§ μ ννλ μκ³ λ¦¬μ¦
- 첫 λ²μ§Έ μμμλ 첫 λ²μ§Έ μμΉμ κ°μ₯ μ΅μκ°μ λ£λλ€.
- λ λ²μ§Έ μμμλ λ λ²μ§Έ μμΉμ λ¨μ κ° μ€μμμ μ΅μκ°μ λ£λλ€.
- ... μ΄ν μλ΅
- κ³Όμ μ€λͺ
- μ£Όμ΄μ§ λ°°μ΄ μ€μμ μ΅μκ°μ μ°Ύλλ€.
- ν΄λΉ κ°μ 맨 μ²μμ μμΉν κ°κ³Ό κ΅μ²΄νλ€.
- 맨 μ²μ μμΉλ₯Ό μ μΈν λλ¨Έμ§ μμλ€μ κ°μ λ°©λ²μΌλ‘ κ΅μ²΄νλ€.
- (λ°°μ΄μ κΈΈμ΄ - 1) λ§νΌ μμ 1 ~ 3 κ³Όμ μ λ°λ³΅νλ€.
π νμ΄
π§π»π» λμ νμ΄ λ°©λ²
function solution(arr) {
let answer = arr;
for (let i = 0; i < arr.length - 1; i++) {
// iλ νμ¬ μ λ ¬μ νμ νκ³ μ νλ μμΉ(μΈλ±μ€)
let min = arr[i];
let index = i;
// νμ λ μ λ ¬μ μ μΈν λλ¨Έμ§ μμλ€ μ€μμ μ΅μκ°μ μ°Ύλ κ³Όμ
for (let j = i + 1; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j];
index = j;
}
}
// μ΅μκ°μ μ°Ύμ ν ν΄λΉ κ°μ temp λ³μλ₯Ό μ¬μ©ν΄ κ΅μ²΄νκ³ μ λ ¬μ νμ νλ€.
let temp = arr[i];
arr[i] = arr[index];
arr[index] = temp;
}
return answer;
}
let arr = [13, 5, 11, 7, 23, 15];
console.log(solution(arr));
π¨πΌπ« κ°μ¬λ νμ΄ λ°©λ²
λμ νμ΄ λ°©λ²κ³Ό μ μ¬νμ§λ§, λ°°μ΄μ μμλ₯Ό κ΅μ²΄νλ λ°©λ²μΌλ‘ ꡬ쑰 λΆν΄ ν λΉ κ΅¬λ¬Έμ μ¬μ©νλ€.
ꡬ쑰 λΆν΄ ν λΉ κ΅¬λ¬Έμ λ°°μ΄μ΄λ κ°μ²΄μ μμ±μ ν΄μ²΄νμ¬ κ·Έ κ°μ κ°λ³ λ³μμ λ΄μ μ μκ² νλ JavaScriptμ ννμμ΄λ€.
[arr[i], arr[idx]] = [arr[idx], arr[i]];
// κ°μ¬λ νμ΄ λ°©λ²
function solution(arr) {
let answer = arr;
for (let i = 0; i < arr.length - 1; i++) {
let idx = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[idx]) idx = j;
}
[arr[i], arr[idx]] = [arr[idx], arr[i]];
}
return answer;
}
let arr = [13, 5, 11, 7, 23, 15];
console.log(solution(arr));
ππ» μ°Έκ³ ν μ¬μ΄νΈ
[μκ³ λ¦¬μ¦] μ ν μ λ ¬(selection sort)μ΄λ - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io