선택 정렬 이란 간단히 말해서 수열에서 가장 작은 값을 맨 앞으로 보내는 과정을 반복하는 것이다. 

선택 정렬 

시간 복잡도 : O(N^2) 

 

상당히 비효율적이라 잘 쓰진않지만 코드가 간단하다.

 

 알고리즘 

 

1. 배열 전체를 탐색하며 최소값과 인덱스를 저장.

2. 맨 앞인덱스와 최소값의 인덱스의 값을 교환.

3. 비교인덱스 +1

4. 1-3 과정 반복.

 

 코드 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<iostream>
 
using namespace std;
 
int main() {
   int arr[10= { 1,10,5,8,7,6,2,4,3,9 };
   int min, idx, temp;
 
   cout << "정렬전 :";
   for (int i = 0; i < 10; i++)
      cout << arr[i] << " ";
   cout << endl << "정렬후 : ";
 
 
//선택 정렬 
   for (int i = 0; i < 10; i++) {
      min = 9999;
      for (int j = i; j < 10; j++) {
         if (min > arr[j]) {
            idx = j;
            min = arr[j];
         }
      }
      temp = arr[i];
      arr[i] = arr[idx];
      arr[idx] = temp;
   }
   for (int i = 0; i < 10; i++)
      cout << arr[i] << " ";
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter

 

 

모든 글의 내용은 나동빈님 블로그를 참고 하였습니다.

https://blog.naver.com/ndb796/221228342808

'c++ > 알고리즘 공부' 카테고리의 다른 글

삽입 정렬 : insert sort  (0) 2020.05.06
버블 정렬 : Bubble sort  (0) 2020.05.06
플루이드 - 와샬 알고리즘  (0) 2020.05.01
DFS(깊이 우선 탐색)  (0) 2020.04.30
BFS(너비 우선 탐색)  (0) 2020.04.30
ariz1623