์ฝ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ (Insertion Sort) :
์์ ์์๋ถํฐ ์ฐจ๋ก๋๋ก ์งํํ์ฌ
์์ ์์ ์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐฐ์ด์
์์ ์ ์์น๋ฅผ ์ฝ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ
์๊ฐ๋ณต์ก๋ : O(n**2)
ใ กใ กใ กใ กใ ก
#include <stdio.h>
#define MAX 8
void print_array(int list[], int n) {
int i;
for (i = 0; i < n; ++i) {
printf("%d ", list[i]);
}
printf("\n");
}
void insertion_sort(int list[]) {
int i; // ์ ๋ ฌ๋ ์์์ ์ธ๋ฑ์ค
int j; // ์ ๋ ฌ๋ ์์ ๊ธฐ์ค @์ผํธ@์ ์๋ ์์๋ค์ ์ธ๋ฑ์ค
int remember;
for (i = 1; i < MAX; ++i) { // i : 1, 2, 3, 4, 5, 6, 7
remember = list[i]; // ์ ๋ ฌ๋ ์์์ ๊ฐ์ reamember์ ์ ์ฅ.
for (j = i - 1; j >= 0 && list[j] > remember; --j) // j๋ 0๋ถํฐ ์์.-> 0/1,0/2,1,0/... // ๋ง์ง๋ง์ --j .
list[j + 1] = list[j]; // j๋ฒ์งธ ์์๊ฐ์ ์ค๋ฅธ์ชฝ ์์์ ์ ์ฅ.
list[j + 1] = remember; // j๋ฒ์งธ ์์์๋ remember์ ์ ์ฅํด๋ i๋ฒ์งธ ์์์ ๊ฐ์ ๋์
.
}
}
void main() {
int arr[MAX] = { 8,7,4,6,1,3,2,5 };
printf("์ ๋ ฌ ์ : ");
print_array(arr, MAX);
insertion_sort(arr); // insertion_sort() ํจ์ ํธ์ถ.
printf("์ ๋ ฌ ํ : ");
print_array(arr, MAX);
}
ใ กใ กใ กใ กใ ก
':: C_ ๐ฉ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] by C์ธ์ด #09 [stack ๊ตฌ์กฐ] (0) | 2021.03.30 |
---|---|
[์๋ฃ๊ตฌ์กฐ] by C์ธ์ด -#08 [Quick sort] (0) | 2021.03.29 |
[์๋ฃ๊ตฌ์กฐ] by C์ธ์ด -05- [Merge Sort, Quick Sort] (0) | 2021.03.27 |
[์๋ฃ๊ตฌ์กฐ] #03 by C์ธ์ด [์ฌ๊ทํธ์ถ ์๊ณ ๋ฆฌ์ฆ] (0) | 2021.03.26 |
[์๋ฃ๊ตฌ์กฐ] by c์ธ์ด #02 ์๊ฐ๋ณต์ก๋, ๊ณต๊ฐ๋ณต์ก๋, Big-O ํ๊ธฐ๋ฒ (0) | 2021.02.16 |
๋๊ธ