[허언증/Algorithm] 선택정렬(Selection Sort)

2019. 11. 1. 18:02· # 알고리즘 문제풀이&연습/[ Algorithm ]
반응형

안녕하세요! 허언증입니다.

선택정렬에 대해 공부 하도록 하겠습니다.

 


 

 

선택정렬(Selection Sort)? 

 

가장 작은 것을 앞으로 이동시키면 어떨까?

 

생각에서 만들어지게 된 알고리즘 입니다.

곧 바로 예시로 한 번 알아보도록 하겠습니다.

 

 

 

1, 5, 3, 10, 4, 7, 9, 2, 6, 8

(정렬되지 않은 숫자 1~10까지의 나열 된 상태입니다)

선택정렬의 방식으로 나열을 시작하면

 

 

 

첫 번째 자리에 있는 1을 기준으로 2~10번 자리까지 비교를 하고 

제일 작은 수와 자리를 바꿔줍니다.

1은 이미 제일 작은 수 이기도 하고 첫 번째자리에 있으니 변화가 없습니다.

 

 

이젠 첫 번째 자리를 제외하고 

두 번째 자리에 있는 5를 가지고 비교를 시작합니다.

1, 5, 3, 10, 4, 7, 9, 2, 6, 8

3~10번 자리까지 비교를 하면

2가 제일 작은 수이니 5와 2의 자리를 바꿔 줍니다.

1, 2, 3, 10, 4, 7, 9, 5, 6, 8

 

 

그 다음으로 세 번째 자리수인 3을 4~10번 자리수 마다 비교를 하고 

작은수가 있으면 교환 & 그렇지 않으면 유지를 합니다.

지금의 경우 3이 3번째로 작은수 이면서 제자리에 있기 때문에 

교환은 일어 나지 않고 그대로 유지하고 다음 단계로 넘어갑니다.

 

이젠 네 번째 자리 수인 10을 기준으로 5~10번째 자리 수와 비교를 합니다.

비교를 하면 이젠 감이 오셨을 텐데 4와 자리 바꿈이 일어납니다

1, 2, 3, 4, 10, 7, 9, 5, 6, 8

 

계속 이러한 과정을 통해 숫자를 정렬을 하게 됩니다.

 

 

 


 

이러한 과정을 소스코드로 작성하면

j=i 인 이유!!! 생각해보기!!!!

위와 같이 만들 수 있습니다. (C언어로 작성)

 

 

 

i,j = for문 인자

min = 비교 할 변수

temp = 서로 자리를 바꿀때 임시로 저장하는 변수

index = 비교를 다하고 최종적으로 작은수를 입력받는 변수

 

 

 


 

 

선택정렬의 시간 복잡도는

 

O(N^2)

 

 

 

 

 

 

 

* 참고 게시글 *

 

시간 복잡도 & 빅오표기법 - 시간복잡도&빅오표기법 공부하러 가자! Click!! Click!!

반응형

'# 알고리즘 문제풀이&연습 > [ Algorithm ]' 카테고리의 다른 글

[허언증/Algorithm] 힙정렬(Heap Sort)  (0) 2020.01.29
[허언증/Algorithm] Union_Find 합집합 찾기 (node find Algorithm)  (0) 2019.12.06
[허언증/Algorithm] 버블정렬(Bubble Sort)  (0) 2019.11.01
[허언증/Algorithm] 시간복잡도 / 빅오표기법  (0) 2019.10.31
'# 알고리즘 문제풀이&연습/[ Algorithm ]' 카테고리의 다른 글
  • [허언증/Algorithm] 힙정렬(Heap Sort)
  • [허언증/Algorithm] Union_Find 합집합 찾기 (node find Algorithm)
  • [허언증/Algorithm] 버블정렬(Bubble Sort)
  • [허언증/Algorithm] 시간복잡도 / 빅오표기법
이론과 실습 사이
이론과 실습 사이
Job : 네트워크, 가상화, Private Cloud / Hobby : 사진,재테크(주식)
이론과 실습 사이
이론과 실습 사이
이론과 실습 사이
전체
오늘
어제
  • KyungKing's Story
    • # OS
      • [ Linux ]
      • [ Windows ]
    • # Language
      • [ Python ]
      • [ C & C++ ]
      • [ Javascript ]
      • [ Shell Script ]
    • # Network
      • [ GNS3 ]
      • [ Coding ]
      • [ 용어 정리 ]
      • [ Network ]
      • [ Packet Tracer ]
    • # VMware
      • [ VDI 관리서버 설치 ]
      • [ vSphere ]
      • [ vCenter ]
      • [ Horizon ]
      • [ Aria ]
      • [ vGPU ]
      • [ Ect ]
    • # Script
    • # Docker
      • [ Docker 이론 ]
      • [ Docker 실습 ]
    • # Cloud
      • [ Cloud ]
      • [ AWS Cloud ]
    • # NIVIDIA
      • [ 실습 ]
    • # Storage
      • [ TrueNas 실습 ]
    • # 알고리즘 문제풀이&연습
      • [ Algorithm ]
      • [ BaekJoon ]
      • [ CodeUp -기초 100제 ]
    • # Study
      • [ 영어 공부 ]
      • [ # TroubleShooting ]
      • [ 이것이 리눅스다 ]
      • [ Big Network Design ]
      • [ 시스코 아카데미 패킷트레이서 ]
      • [ 성공과 실패를 결정하는 1%의 네트워크원리 ]
    • # 결과물
      • [ 개인 프로젝트 ]
      • [ 자격증 & 수료 ]
      • [ 프로그램 완성작품 ]
    • # 관심 분야
      • [ 주식 투자 ]
      • [ Machine learning ]
    • # 개인기록 및 창고
      • [ 유용한 정보Tips ]

블로그 메뉴

  • KyungKing's GitHub
  • KyungKing's 투자 이야기
  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 백준
  • 공부
  • 네트워크
  • 허언증
  • Packet Tracer
  • C언어
  • c++
  • 이것이리눅스다
  • 알고리즘
  • Algorithm
  • VMware
  • Router
  • socket
  • Linux
  • cisco
  • ESXi
  • vCenter
  • network
  • 코딩
  • CodeUp

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
이론과 실습 사이
[허언증/Algorithm] 선택정렬(Selection Sort)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.