선택정렬 (Selection sort)

2021. 1. 11. 14:35·Algorithm/Sorting algorithm
반응형

선택정렬 (Selection sort)은 데이터 전체에서 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환하는 방식으로 정렬한다. 버블정렬은 인덱스를 이동하면서 교환이 필요하면 즉시 교환했다. 하지만 선택정렬은 두항을 비교하고 작은 값이 저장된 요소값이 아닌 그 배열의 인덱스를 따로 저장한다. 그리고 단계가 끝마칠때 단 한번만 교환한다.

 

5,1,3,4,2 선택정렬 (오름차순)으로 정렬하기!

 

1단계  

5 [0] 1 [1] 3 [2] 4 [3] 2 [4]

선택된 항 = 0번째 인덱스 (현재 기준점 [0] )

0번째 1번째항 비교, 값은 그대로 두고 기준점만 변경

현재 기준점이 ( [1] )로 변경됨

이후 기준점 [1] 을 기준으로 나머지 2,3,4번째 항을 비교함

 

이후 마지막으로 최초 기준인덱스였던 0번째 인덱스와 최솟값으로 확인된 1번째 인덱스를 교환해줌으로

가장 작은 값을 0번 인덱스로 위치시킬수 있다.

 

이러한 방법으로 계속해 정렬해 나간다.

 

더보기

소스코드

#include<stdio.h>

int main(void)
{
	int alist[5] = { 5,1,3,4,2 };
	int i = 0, j = 0, tmp = 0, Minindex = 0;

	for (i = 0; i < 4; i++)
	{ 
		Minindex = i;
		for (j = i + 1; j < 5; j++)
			if (alist[Minindex] > alist[j])
				Minindex = j;
		if(Minindex != i)
			{
				tmp = alist[Minindex];
				alist[Minindex] = alist[i];
				alist[i] = tmp;
			}
	}

	for (i = 0; i < 5; ++i)
		printf("%d\t", alist[i]);
	printf('\n');
	return 0;
}

 

 

 

*즉시 값을 교환하는 것이 아니라 최솟값이 저장된 배열요소의 인덱스를 갱신한다는것을 생각하자!

반응형

'Algorithm > Sorting algorithm' 카테고리의 다른 글

퀵 정렬 (Quick Sort)  (1) 2021.01.28
버블 정렬 (Bubble Sort)  (0) 2021.01.11
'Algorithm/Sorting algorithm' 카테고리의 다른 글
  • 퀵 정렬 (Quick Sort)
  • 버블 정렬 (Bubble Sort)
Penguin Dev
Penguin Dev
What does the Penguin say?
    글쓰기 관리
  • Penguin Dev
    Pengha!
    Penguin Dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (152)
      • Java & Spring (5)
      • System Hacking (4)
      • Algorithm (8)
        • Sorting algorithm (3)
      • Python (6)
      • Web (2)
        • Web Hacking & Security (2)
      • Write-Up (108)
        • pwnable.kr (17)
        • HackCTF (16)
        • 해커스쿨 FTZ (21)
        • LOB(lord of bufferoverflow) (19)
        • LOS (lord of sql injection) (28)
        • XSS-game (6)
        • Webhacking.kr (1)
      • SUA (19)
        • 오픈소스 보안 (19)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    LOB
    CountDownLatch
    Java
    sqlinjection
    computeifpresent
    concurrenthashmap vs hashmap
    enumerate #list comprehension
    reentrantlock실습
    ReentrantLock
    spring boot
    DB정리
    동시성
    ConcurrentHashMap
    putval()
    computeifabsent()
    코드트리조별과제
    lord of bufferoverflow
    tabat
    동시성처리
    SpringBoot
    hashmap vs concurrenthashmap
    코드트리
    spring
    쿠폰발급
    nop sled
    AQS
    computeifpresent()
    Lock
    computeifabsent
    thread-safe
  • 최근 댓글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
Penguin Dev
선택정렬 (Selection sort)
상단으로

티스토리툴바