1. ์‚ฝ์ž…์ •๋ ฌ(Insertion Sort) ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ํ•„์š”ํ•  ๋•Œ๋งŒ ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•˜๋Š” ์ •๋ ฌ(์•ž์— ์žˆ๋Š” ์›์†Œ๋“ค์ด ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •)
    โ†’ ๋ฌด์กฐ๊ฑด ์œ„์น˜๋ฅผ ๊ตํ™˜ํ•˜๋Š” ๋ฒ„๋ธ” ์ •๋ ฌ, ์„ ํƒ ์ •๋ ฌ์— ๋น„ํ•ด ๋‹ค์†Œ ํšจ์œจ์ 
  • ๋‘๋ฒˆ์งธ ์›์†Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๊ทธ ์•ž์˜ ์›์†Œ๋“ค๊ณผ ๋น„๊ตํ•ด ์‚ฝ์ž…ํ•  ์œ„์น˜๋ฅผ ์ง€์ •ํ•œ ํ›„ ์›์†Œ๋ฅผ ๋’ค๋กœ ์˜ฎ๊ธฐ๊ณ 
    ์ง€์ •๋œ ์ž๋ฆฌ์— ์ž๋ฃŒ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

2. ์‚ฝ์ž…์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌํ˜„

// Algorithm Analysis
// ์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort) : (ํ•„์š”ํ•  ๋•Œ๋งŒ)๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•œ๋‹ค.

#include <stdio.h>
#include <stdlib.h>

int main() {
	int i, j, temp;
	int arr[10] = { 1, 9, 4, 6, 11, 10, 3, 15, 2, 13 };
	for (i = 0; i < 9; i++) {
		j = i;
		while (j >= 0 && arr[j] > arr[j + 1]) {
			temp = arr[j];
			arr[j] = arr[j + 1];
			arr[j + 1] = temp;
			j--;
		}
	}
	for (i = 0; i < 10; i++)
		printf("%d ", arr[i]);

	return 0;
}

 

 

3. ์‚ฝ์ž…์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•

3-1. ์žฅ์ 

  • ์•ˆ์ •์ ์ธ ์ •๋ ฌ๋ฐฉ๋ฒ•(์ค‘๋ณต๋œ ํ‚ค ๊ฐ’์˜ ์ˆœ์„œ๊ฐ€ ์ •๋ ฌ ํ›„์—๋„ ์œ ์ง€๋˜๊ธฐ ๋•Œ๋ฌธ)
  • ๋ ˆ์ฝ”๋“œ ์ˆ˜๊ฐ€ ์ ์„ ๊ฒฝ์šฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž์ฒด๊ฐ€ ๋งค์šฐ ๊ฐ„๋‹จํ•ด ๋‹ค๋ฅธ ์ •๋ ฌ๋ณด๋‹ค ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
  • ๋Œ€๋ถ€๋ถ„ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋งค์šฐ ํšจ์œจ์ 
  • ๋ฒ„๋ธ” ์ •๋ ฌ์ด๋‚˜ ์„ ํƒ ์ •๋ ฌ์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฆ„

3-2. ๋‹จ์ 

  • ๋น„๊ต์  ๋งŽ์€ ๋ ˆ์ฝ”๋“œ๋“ค์˜ ์ด๋™์„ ํฌํ•จ
  • ๋ ˆ์ฝ”๋“œ ์ˆ˜๊ฐ€ ๋งŽ๊ณ  ๋ ˆ์ฝ”๋“œ ํฌ๊ธฐ๊ฐ€ ํด ๊ฒฝ์šฐ ๋ถ€์ ํ•ฉํ•˜๋‹ค.

 

๋”๋ณด๊ธฐ

 

1. ์„ ํƒ์ •๋ ฌ(Selection Sort) ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ œ์ž๋ฆฌ ์ •๋ ฌ(in-place sorting) ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•˜๋‚˜
    โ†’ merge sort๋‚˜ quick sort์ฒ˜๋Ÿผ ์š”์†Œ๋ถ„ํ• ์‹œ ์ถ”๊ฐ€์ ์ธ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ •๋ ฌ. ๋ฒ„๋ธ”, ์‚ฝ์ž…, ์„ ํƒ์ •๋ ฌ ๋“ฑ
  • ํ•ด๋‹น ์ˆœ์„œ์— ์›์†Œ๋ฅผ ๋„ฃ์„ ์œ„์น˜๋Š” ์ด๋ฏธ ์ •ํ•ด์ ธ ์žˆ๊ณ , ๊ทธ ์œ„์น˜์— ์–ด๋– ํ•œ ์›์†Œ๋ฅผ ๋„ฃ์„์ง€ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ฃผ์–ด์ง„ ๋ฐฐ์—ด ์ค‘ ์ตœ์†Œ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.
  • ๊ทธ ๊ฐ’์„ ๋งจ ์•ž์— ์œ„์น˜ํ•œ ๊ฐ’๊ณผ ๊ต์ฒด
  • ๋งจ ์ฒ˜์Œ ์œ„์น˜๋ฅผ ๋บ€ ๋‚˜๋จธ์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ต์ฒด
  • ํ•˜๋‚˜์˜ ์›์†Œ๋งŒ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ์œ„ ๋ฐฉ๋ฒ•์„ ๋ฐ˜๋ณต

 

2. ์„ ํƒ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌํ˜„

# include <stdio.h>
# define SWAP(x, y, temp) ( (temp)=(x), (x)=(y), (y)=(temp) )
# define MAX_SIZE 5

// ์„ ํƒ ์ •๋ ฌ
void selection_sort(int list[], int n){
  int i, j, least, temp;

  // ๋งˆ์ง€๋ง‰ ์ˆซ์ž๋Š” ์ž๋™์œผ๋กœ ์ •๋ ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— (์ˆซ์ž ๊ฐœ์ˆ˜-1) ๋งŒํผ ๋ฐ˜๋ณตํ•œ๋‹ค.
  for(i=0; i<n-1; i++){
    least = i;

    // ์ตœ์†Ÿ๊ฐ’์„ ํƒ์ƒ‰ํ•œ๋‹ค.
    for(j=i+1; j<n; j++){
      if(list[j]<list[least])
        least = j;
    }

    // ์ตœ์†Ÿ๊ฐ’์ด ์ž๊ธฐ ์ž์‹ ์ด๋ฉด ์ž๋ฃŒ ์ด๋™์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
    if(i != least){
        SWAP(list[i], list[least], temp);
    }
  }
}

void main(){
  int i;
  int n = MAX_SIZE;
  int list[n] = {9, 6, 7, 3, 5};

  // ์„ ํƒ ์ •๋ ฌ ์ˆ˜ํ–‰
  selection_sort(list, n);

  // ์ •๋ ฌ ๊ฒฐ๊ณผ ์ถœ๋ ฅ
  for(i=0; i<n; i++){
    printf("%d\n", list[i]);
  }
}

 

 

 

3. ์„ ํƒ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•

3-1. ์žฅ์ 

  • ๊ตฌํ˜„์ด ์‰ฝ๋‹ค.
  • ์ž๋ฃŒ ์ด๋™ ํšŸ์ˆ˜๊ฐ€ ๋ฏธ๋ฆฌ ๊ฒฐ์ •๋จ.
  • ๋น„๊ตํ•˜๋Š” ํšŸ์ˆ˜์— ๋น„ํ•ด ๊ตํ™˜์ด ์ ๊ฒŒ ์ผ์–ด๋‚จ.

3-2. ๋‹จ์ 

  • ์•ˆ์ •์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š”๋‹ค.
    โ†’ ๊ฐ’์ด ๊ฐ™์€ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ƒ๋Œ€์ ์ธ ์œ„์น˜๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ค ๋น„ํšจ์œจ
    โ†’ ๋ฒ„๋ธ”์ •๋ ฌ์— ๋น„ํ•ด ์กฐ๊ธˆ ๋” ๋น ๋ฅธ ์ •๋ ฌ๋ฐฉ์‹

 

๋”๋ณด๊ธฐ

์ฐธ๊ณ ) https://gmlwjd9405.github.io/2018/05/06/algorithm-selection-sort.html

 

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์„ ํƒ ์ •๋ ฌ(selection sort)์ด๋ž€ - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

์ฐธ๊ณ ) https://cocoon1787.tistory.com/687

 

[Algorithm] ์„ ํƒ ์ •๋ ฌ(Selection Sort) ์ด๋ž€?

๐Ÿ“– ์„ ํƒ ์ •๋ ฌ(Selection Sort)์ด๋ž€? ์„ ํƒ ์ •๋ ฌ(Selection Sort)์€ ํ•ด๋‹น ์ˆœ์„œ์— ์›์†Œ๋ฅผ ๋„ฃ์„ ์œ„์น˜๋Š” ์ด๋ฏธ ์ •ํ•ด์ ธ ์žˆ๊ณ , ๊ทธ ์œ„์น˜์— ์–ด๋– ํ•œ ์›์†Œ๋ฅผ ๋„ฃ์„์ง€ ์„ ํƒํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๐Ÿ”Ž ์„ ํƒ ์ •๋ ฌ์˜ ํŠน์ง• ์‹œ

cocoon1787.tistory.com

์ฐธ๊ณ ) https://yabmoons.tistory.com/250

 

[ ์ •๋ ฌ ] ์ •๋ ฌ๋ณ„ ์žฅ๋‹จ์  ๋ฐ ์‹œ๊ฐ„๋ณต์žก๋„

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ •๋ ฌ๋ณ„ ์žฅ๋‹จ์  ๋ฐ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๋น„๊ตํ•จ์œผ๋กœ์จ ์–ด๋–ค ์ •๋ ฌ์ด ์ œ์ผ ์ข‹๊ณ  ๋‚˜์œ์ง€๋ฅผ ์•Œ์•„๋ณด์ž ! ์‚ฌ์‹ค ์ด ์ •๋ ฌ๋ฒ•์ด ๋ฌด์กฐ๊ฑด ์ œ์ผ ์ข‹์•„์š” ! ๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ ฌ๋ฒ•์€ ์—†๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๊ฐ

yabmoons.tistory.com

 

1. ๋ฒ„๋ธ”์ •๋ ฌ(bubble sort) ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์„œ๋กœ ์ธ์ ‘ํ•œ ๋‘ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๋” ์ž‘์€ ๊ฐ’์„ ์•ž์œผ๋กœ ๋ณด๋‚ด์–ด ์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์ธ์ ‘ํ•œ 2๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋น„๊ตํ•˜์—ฌ ํฌ๊ธฐ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ๋˜์–ด์žˆ์ง€ ์•Š์œผ๋ฉด ์„œ๋กœ ๊ตํ™˜
  • ์„ ํƒ ์ •๋ ฌ๊ณผ ๊ธฐ๋ณธ ๊ฐœ๋…์ด ์œ ์‚ฌ
    โ†’ ๋ฒ„๋ธ”์ •๋ ฌ : ์š”์†Œ๋ฅผ ๊ตํ™˜ ์ •๋ ฌ / ์•ˆ์ •์  ์•Œ๊ณ ๋ฆฌ์ฆ˜ / ์†๋„๋А๋ฆผ / ๊ฐ„๋‹จํ•˜๊ณ  ๋น„ํšจ์œจ์ 
    โ†’ ์„ ํƒ์ •๋ ฌ : ์š”์†Œ๋ฅผ ์„ ํƒํ•˜์—ฌ ์ •๋ ฌ / ๋ถˆ์•ˆ์ •ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ / ๋ฒ„๋ธ”์ •๋ ฌ์— ๋น„ํ•ด ๋น ๋ฆ„ / ํšจ์œจ์ 
    โ€ป ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ชฉ๋ก์ด๋‚˜ ๋ฐฐ์—ด์—์„œ ์ •๋ ฌ ์ „ ๋ฐœ์ƒํ•˜๋Š” ๋™์ผํ•œ ์ˆœ์„œ๋กœ ๋™์ผํ•œ ํ‚ค๊ฐ€ ์žˆ๋Š” ์š”์†Œ๊ฐ€ ์•ˆ์ •์ ์ด๋ผ ๊ฐ„์ฃผ

 

2. ๋ฒ„๋ธ”์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌํ˜„

์ฒซ ๋ฒˆ์งธ ์ž๋ฃŒ์™€ ๋‘ ๋ฒˆ์งธ ์ž๋ฃŒ๋ฅผ, ๋‘ ๋ฒˆ์งธ ์ž๋ฃŒ์™€ ์„ธ ๋ฒˆ์งธ ์ž๋ฃŒ๋ฅผ, ์„ธ ๋ฒˆ์งธ์™€ ๋„ค ๋ฒˆ์งธ๋ฅผ ๋น„๊ต โ€ฆ

์ด๋Ÿฐ ์‹์œผ๋กœ (๋งˆ์ง€๋ง‰-1)๋ฒˆ์งธ ์ž๋ฃŒ์™€ ๋งˆ์ง€๋ง‰ ์ž๋ฃŒ๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ตํ™˜ํ•˜๋ฉด์„œ ์ž๋ฃŒ๋ฅผ ์ •๋ ฌ.

 

#include <stdio.h>
#include <stdlib.h>

int main() {
	int i, j, temp;
	int arr[10] = { 1, 9, 4, 6, 11, 10, 3, 15, 2, 13 };
	for (i = 0; i < 10; i++) {
		for (j = 0; j < 9 - i; j++) {
			if (arr[j] > arr[j + 1]) {
				temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
	for (i = 0; i < 10; i++)
		printf("%d ", arr[i]);

	return 0;
}

 

3. ๋ฒ„๋ธ”์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•

3-1. ์žฅ์ 

  • ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜๋‹ค.

3-2. ๋‹จ์ 

  • ํ•˜๋‚˜์˜ ์š”์†Œ๊ฐ€ ๊ฐ€์žฅ ์™ผ์ชฝ์—์„œ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐฐ์—ด์—์„œ ๋ชจ๋“  ๋‹ค๋ฅธ ์š”์†Œ๋“ค๊ณผ ๊ตํ™˜๋˜์–ด์•ผ ํ•œ๋‹ค.
  • ์—ฐ์‚ฐ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋งŽ์•„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘์—์„œ ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ€์žฅ ๋А๋ฆฌ๊ณ  ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง€๋Š” ์ •๋ ฌ๋ฐฉ์‹.

โ†’ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž๋ฃŒ์˜ ๊ตํ™˜์ž‘์—…(SWAP)์ด ์ž๋ฃŒ์˜ ์ด๋™์ž‘์—…(MOVE)๋ณด๋‹ค ๋” ๋ณต์žกํ•˜๊ธฐ ๋•Œ๋ฌธ์—     
๋ฒ„๋ธ”์ •๋ ฌ์€ ๋‹จ์ˆœ์„ฑ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ฑฐ์˜ ์“ฐ์ด์ง€ ์•Š์Œ

 

 

 

๋”๋ณด๊ธฐ

+ Recent posts