[알고리즘 개념] 선택 정렬 (selection sort) c++

2022. 7. 17. 21:20·Algorithm/알고리즘
728x90
728x90

선택정렬

 

선택정렬 (selection sort)은 제자리 정렬 알고리즘의 하나이다.

  1. 주어진 리스트 중에 최소값을 찾는다.
  2. 그 값을 맨 앞에 위치한 값과 교체한다(패스(pass)).
  3. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다.

이 1,2,3을 계속 반복하는 알고리즘이다.

출처 위키백과

이런식으로 처음엔 첫번째 원소부터 마지막 원소중 최소값을 찾아 배열 맨 앞에 있는 원소와 교환하고

(정렬된 첫번째 원소를 제외한) 두번째 원소부터 마지막 원소중 최소값을 또 찾아 배열 두번쨰 원소와 교환하고

 배열 마지막 원소는 자동으로 정렬되기 때문에 원소 개수 -1 만큼 반복해 주면 된다.

 

 

C++ 로 구현

 

#include<iostream>
using namespace std;
int a[10] = { 3,6,7,1,4,2,9,0,5,8 };

void selection_sort(int a[], int n)
{
	int min;
	int tmp, index;
	for (int i = 0; i < n-1; i++) {
		min = INT_MAX;  //for문 돌릴때마다 최소값 초기화
		for (int j = i; j < n; j++) {
			if (min > a[j]) {  //최소값 찾기
				min = a[j];
				index = j;
			}
		}
		tmp = a[i];  //현재위치와 최소값과 교환
		a[i] = a[index];
		a[index] = tmp;
	}
}

int main()
{
	selection_sort(a, 10);

	for (int i = 0; i < 10; i++) {
		cout << a[i] << " ";
	}
	return 0;
}
728x90
728x90

'Algorithm > 알고리즘' 카테고리의 다른 글

[알고리즘 개념] 동적 계획법 (Dynamic Programming) -(1)  (0) 2022.07.19
[알고리즘 개념] 삽입 정렬 (insertion sort) c++  (1) 2022.07.19
[알고리즘 개념] 버블 정렬 (bubble sort) c++  (0) 2022.07.19
[알고리즘 개념] 퀵 정렬 (quick sort) c++  (0) 2022.07.16
'Algorithm/알고리즘' 카테고리의 다른 글
  • [알고리즘 개념] 동적 계획법 (Dynamic Programming) -(1)
  • [알고리즘 개념] 삽입 정렬 (insertion sort) c++
  • [알고리즘 개념] 버블 정렬 (bubble sort) c++
  • [알고리즘 개념] 퀵 정렬 (quick sort) c++
성장하고픈개발자
성장하고픈개발자
방학 기념 개발블로그 작성하기
    반응형
  • 성장하고픈개발자
    꾸준히하자아자
    성장하고픈개발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • 프로젝트 (5)
        • 카카오 쇼핑하기 web (4)
        • 요약쏙 (0)
      • Algorithm (46)
        • 백준 & 프로그래머스 (40)
        • 알고리즘 (5)
      • Web (5)
        • 네트워크 (1)
        • Spring (4)
        • JPA (0)
        • HTTP (1)
      • 후기 (3)
      • SSAFY 일상 (6)
      • 취준 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 깃허브
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    Andrew Ng
    싸피 13기
    쉬운딥러닝
    SSAFY
    PS
    딥러닝
    withmockuser
    백엔드
    스택
    책리뷰
    FNN
    일상
    백준
    코딩
    BOJ
    싸피
    그리디
    회고
    합격수기
    SpringBoot
    testing
    신경망기초
    DP
    정렬
    C++
    네이버데이터센터각
    web
    Spring Data JPA
    알고리즘
    Spring
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.1
성장하고픈개발자
[알고리즘 개념] 선택 정렬 (selection sort) c++
상단으로

티스토리툴바