์ ๋ ฌ์ ๊ฐ์
์๊ณ ๋ฆฌ์ฆ์ ๋ฐฐ์ธ ๋ ๊ฐ์ฅ ๋จผ์ ๋์ค๋ ๋ด์ฉ์ด '์ ๋ ฌ (Sort)'์ด๋ค. ๊ทธ ์ด์ ๋ ์ ๋ ฌ๋งํผ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ ์ฐจ์ด๋ฅผ ๊ทน๋ช ํ๊ฒ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค!
์ ํ ์ ๋ ฌ
๋ค์์ ์ซ์๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
1 10 5 8 7 6 4 3 2 9
์ผ๋ฐ์ ์ผ๋ก ์ธ๊ฐ์ '๊ทธ๋ฅ ์์์๋ถํฐ ์ฐ๋ฉด ๋์ง'๋ผ๊ณ ์๊ฐํ์ง๋ง, ์ปดํจํฐ๋ ๊ทธ๋ ์ง ์๊ณ ๊ณผ์ ์ ๊ตฌ์ฒด์ ์ผ๋ก ๋ช ์ํด์ค์ผ ํ๋ค. ์์ ์๋ฅผ ์ ๋ ฌํ๊ธฐ ์ํ ์์ด๋์ด์ค ํ๋๊ฐ ์ ํ์ ๋ ฌ์ด๋ค.
์ ํ์ ๋ ฌ์ด๋ ๊ฐ์ฅ ์์ ๊ฒ์ ์ ํํด์ ์ ์ผ ์์ผ๋ก ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด๋ ๊ฐ์ฅ ์์์ ์ด๊ณ ๊ธฐ์ด์ ์ธ ๋ฐฉ๋ฒ์ค ํ๋์ด๋ค.
C ์ธ์ด
#include <stdio.h>
int main(void){
// ์ ํ์ ๋ ฌ
int i, j, min, index, temp;
int array[10] = { 1,10,5,8,7,6,4,3,2,9 };
for (i = 0; i < 10; i++) { //๋ฐฐ์ด์ ์์ ํ๋์ฉ ์ ํํ๋ฉฐ ๋ฐ๋ณต
min = array[i]; // ๋ฐ๋ณต๋ฌธ์ด ์คํ๋ ๋์ ๋งจ ์ฒซ์งธ ๊ฐ์ผ๋ก min, index ์ด๊ธฐํ
index = i;
for (j = i; j < 10; j++) { // ์ ๋ ฌ ์๋ ๋ถ๋ถ๋ง ๋ฐ๋ณต
if (min > array[j]) { //๋ง์ฝ ์ต์๊ฐ์ด ํ์ฌ ๊ฐ๋ณด๋ค ํฌ๋ค๋ฉด
min = array[j]; // min๊ฐ ์
๋ฐ์ดํธ
index = j;
}
}
temp = array[i]; // ๋ชจ๋ ์ ๋ ฌ ์๋ ๊ณณ ์ํํ ์ค์
array[i] = array[index];
array[index] = temp;
}
for (i = 0; i < 10; i++) { //๋ฐฐ์ด ์ถ๋ ฅ
printf("%d ", array[i]);
}
return 0;
}
์ด ๋ฐฉ์์ ๋ฐ์ดํฐ์ ๊ฐฏ์๊ฐ N๊ฐ์ผ ๋ ๋น๊ต์ฐ์ฐ์ N * (N+1) / 2 ๋ฒ ์ํํ๋ค.
๋ฐ๋ผ์ ์ ํ ์ ๋ ฌ์ ์๊ฐ ๋ณต์ก๋๋ O(N^2)์ด๋ค.
๋ฐ๋ผ์ ๋ฐ์ดํฐ์ ๊ฐฏ์๊ฐ 10,000๊ฐ๋ผ๋ฉด ๋๋ต 1์ต๋ฒ์ ๋น๊ต์ฐ์ฐ์ ์ํํ๊ฒ ๋๋ค.
ํ์ด์ฌ
a = [1,10,5,8,7,6,4,3,2,9]
for i in range(len(a)): # ์์์ ๋ถํฐ ํ๊ฐ์ฉ
min = a[i] # ๋งจ ์ฒซ๋ฒ์งธ ๊ฐ์ ์ต์๊ฐ์ผ๋ก ์ด๊ธฐํ
idx=i # idx์ ์ฅ
for j in range(len(a)-i): # i๋ฒ์งธ ๋ถํฐ ์ํ
if min> a[j+i]: # ๋ง์ฝ min ๊ฐ์ด j-i๋ณด๋ค ํฌ๋ฉด
min = a[j+i] # min์ a[j-i]์ ์ฅ
idx = j+i #min idx์ ์ฅ
tmp = a[i]
a[i] = min
a[idx] = tmp
a
์ด ๊ธ์ ๋๋๋น๋์ ์ค์ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ข (Algorithm Programming Tutorial)๋ฅผ ์ฐธ๊ณ ํด ์์ฑํ์์ต๋๋ค.
https://www.youtube.com/watch?v=qQ5iLNjpxSk&list=PLRx0vPvlEmdDHxCvAQS1_6XV4deOwfVrz
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ [Algorithm] - ๋ณํฉ ์ ๋ ฌ Merge Sort(5) (C,Python) (0) | 2022.03.10 |
---|---|
์๊ณ ๋ฆฌ์ฆ [Algorithm] - ๊ธฐ์ด ์ ๋ ฌ๋ฌธ์ ํ์ด๋ณด๊ธฐ (5) (C, Python) (0) | 2022.03.09 |
์๊ณ ๋ฆฌ์ฆ [Algorithm] - ํต ์ ๋ ฌ (4) (C, Python) (0) | 2022.03.08 |
์๊ณ ๋ฆฌ์ฆ [Algorithm] - ์ฝ์ ์ ๋ ฌ (3) (C, Python) (0) | 2022.03.07 |
์๊ณ ๋ฆฌ์ฆ [Algorithm] - ๋ฒ๋ธ ์ ๋ ฌ Bubble Sort (2) (C, Python) (2) | 2022.03.06 |