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));
๐๐ป ์ฐธ๊ณ ํ ์ฌ์ดํธ
'Algorithm > ์ธํ๋ฐ(inflearn)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript/section 7] 03 - Special Sort(๊ตฌ๊ธ ์ธํฐ๋ทฐ) (0) | 2022.10.02 |
---|---|
[JavaScript/section 7] 02 - ๋ฒ๋ธ ์ ๋ ฌ (0) | 2022.09.30 |
[JavaScript/section 6] 07 - ๊ต์ก๊ณผ์ ์ค๊ณ (0) | 2022.09.28 |
[JavaScript/section 6] 06 - ๊ณต์ฃผ ๊ตฌํ๊ธฐ (0) | 2022.09.27 |
[JavaScript/section 6] 05 - ์ ๋ง๋๊ธฐ (0) | 2022.09.27 |