๐ก ์ ํ์ ๋ ฌ ( Selection Sort )
๊ฐ์ฅ ์์์ ์ธ ๋ฐฉ๋ฒ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ
๋ฐ์ดํฐ๊ฐ ๋ฌด์์๋ก ์ฌ๋ฌ๊ฐ ์์ ๋, ๊ฐ์ฅ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํด ๋งจ ์์ ์๋ ๋ฐ์ดํฐ์ ๋ฐ๊พธ๊ณ , ๊ทธ ๋ค์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํด
์์์ ๋๋ฒ์งธ ๋ฐ์ดํฐ์ ๋ฐ๊พธ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
์๊ฐ ๋ณต์ก๋ : O(N²)
์ฅ์
- ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์๋น๊ฐ ์๋ค.
๋จ์
- ์์ ์ ๋ ฌ์ด ์๋๋ค.
- ์๊ฐ๋ณต์ก๋๊ฐ O(N^2) ์ด๋ค.
public void sort(int[] arr) {
for(int i=0; i<arr.length-1; i++){
int min_index = i;
for(int j=i+1; j<arr.length; j++){
if(arr[j]<arr[min_index])
min_index = j;
}
int temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
}
๐ก ์ฝ์ ์ ๋ ฌ ( Insertion Sort )
๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ํ์ธํ๋ฉฐ, ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ ์์น์ ์ฝ์ ํ๋ค.
์ ํ์ ๋ ฌ์ ๋นํด ์คํ ์๊ฐ ์ธก๋ฉด์์ ๋ ํจ์จ์ ์ด๋ฉฐ, ํ์ํ ๋๋ง ์์น๋ฅผ ๋ฐ๊พธ๋ฏ๋ก ๋ฐ์ดํฐ๊ฐ ๊ฑฐ์ ์ ๋ ฌ๋์ด ์์๋ ๋์ฑ ํจ๊ณผ์ ์ด๋ค.
์ฝ์ ์ ๋ ฌ์ ํน์ ํ ๋ฐ์ดํฐ๊ฐ ์ ์ ํ ์์น์ ๋ค์ด๊ฐ๊ธฐ ์ด์ ์, ๊ทธ ์๊น์ง์ ๋ฐ์ดํฐ๋ ์ด๋ฏธ ์ ๋ ฌ๋์ด ์๋ค๊ณ ๊ฐ์ ํ๋ค.
์ ๋ ฌ๋์ด ์๋ ๋ฐ์ดํฐ ๋ฆฌ์คํธ์์ ์ ์ ํ ์์น๋ฅผ ์ฐพ์ ๋ค์, ๊ทธ ์์น์ ์ฝ์ ๋๋ค.
์๊ฐ๋ณต์ก๋ : O(N^²)
์ฅ์
- ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์๋น๊ฐ ์๋ค.
- ๊ฑฐ์ ์ ๋ ฌ๋ ๊ฒฝ์ฐ ๋งค์ฐ ํจ์จ์ ์ด๋ค. ์ฆ ์ต์ ์ ๊ฒฝ์ฐ O(N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
- ์์ ์ ๋ ฌ์ด ๊ฐ๋ฅํ๋ค.
๋จ์
- ์ญ์์ ๊ฐ๊น์ธ์๋ก ๋งค์ฐ ๋นํจ์จ์ ์ด๋ค. ์ฆ ์ต์ ์ ๊ฒฝ์ฐ O(N^2)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
- ๋ฐ์ดํฐ์ ์ํ์ ๋ฐ๋ผ์ ์ฑ๋ฅ ํธ์ฐจ๊ฐ ๋งค์ฐ ํฌ๋ค.
public void sort(int[] arr) {
for(int i=1; i<arr.length;i++){
int temp=arr[i];
int j;
for(j=i-1; j>=0;j--){ // ํ ์นธ์ฉ ์ผ์ชฝ์ผ๋ก ์ด๋
if(temp < arr[j])
arr[j+1] = arr[j];
else break; // ์๊ธฐ๋ณด๋ค ์์ ๊ฐ์ ๋ง๋๋ฉด ๊ทธ ์์น์์ ๋ฉ์ถค
}
arr[j+1] = temp;
}
}
๐ก ๋ฒ๋ธ์ ๋ ฌ ( Bubble Sort )
๋ ๊ฐ์ ์ธ์ ํ ์์๋ฅผ ๋น๊ตํ์ฌ ์ ๋ ฌํ๋ ๋ฐฉ์
์๊ฐ๋ณต์ก๋ : O(N2)
์ฅ์
- ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์๋น๊ฐ ์๋ค.
- ๊ตฌํ์ด ๋งค์ฐ ์ฝ๋ค.
- ์์ ์ ๋ ฌ์ด ๊ฐ๋ฅํ๋ค.
๋จ์
- ๋ค๋ฅธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋นํด ๊ตํ ๊ณผ์ ์ด ๋ง์ ๋ง์ ์๊ฐ์ ์๋นํ๋ค.
public void sort(int[] arr) {
for(int i=0; i<arr.length-1; i++){
for(int j=0; j<arr.length-i-1; j++){
if(arr[j]>arr[j+1]){
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
}
'๐ ์ฝ๋ฉํ ์คํธ > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] Collection ( HashMap , HashSet ์ฐจ์ด ) (0) | 2022.11.11 |
---|---|
[JAVA][์๊ณ ๋ฆฌ์ฆ] BFS (0) | 2022.11.08 |
[JAVA] Queue ์ ๋ฆฌ (0) | 2022.11.05 |
[JAVA] Stack ์ ๋ฆฌ (0) | 2022.11.05 |
[JAVA] BigDecimal ์ ๋ฆฌ (0) | 2022.11.05 |