๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Welcome.
:: C_ ๐Ÿšฉ/์•Œ๊ณ ๋ฆฌ์ฆ˜

[์ž๋ฃŒ๊ตฌ์กฐ] by C์–ธ์–ด #07 [insertion sort]

by EunBird 2021. 3. 28.

์‚ฝ์ž… ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (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);
}

ใ…กใ…กใ…กใ…กใ…ก

728x90

๋Œ“๊ธ€