Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- tiles.xml
- jQuery
- Servlet
- docker
- RDS
- CSS
- Cookie
- websocket
- JavaScript
- 도커
- Spring
- express
- phaser
- Ajax
- 배포
- JSP
- model1
- 알고리즘
- 암호화
- 블록체인
- HTML
- 웹소켓
- PL/SQL
- 웹게임
- SQL
- EC2
- autowired
- 비트코인
- AWS
- node.js
Archives
- Today
- Total
記錄
선택정렬 본문
의미>
1부터 10까지의 배열이 무작위로 있을 때 10개를 대상으로 가장 작은 것을 골라 맨 앞과 위치 스위칭. 그리고 맨 앞에 간 가장 작은 것은 제쳐두고 나머지 9개를 대상으로 전체 검색을 하여 그 중 가장 작은 것을 맨 앞으로 스위칭.
이런 식으로 "비교-> 특정-> 위치 스위칭 -> 제껴두고 나머지들을 대상으로 다시 비교-> 특정-> 스위칭" 하는 것을 선택정렬이라고 함. '선택'인 이유는 대상을 특정해서 이를 선택하여 위치를 바꾸는데에서 '선택'이라는 명칭이 발생.
코드예시>
#include <stdio.h>
int main(void){
int array[10] = {9, 5, 6, 8, 3, 7, 10, 2, 4, 1};
int i, j, index, min, temp;
for(i = 0; i < 10; i++){
min = 100;
//for(j = i; j < (10-i); j++){
for(j = i; j < 10; j++){
if(array[j] < min){
min = array[j];
index = j;
}
}
temp = array[i];
array[i] = array[index];
array[index] = temp;
}
for(i = 0; i < 10; i++){
printf("%d ", array[i]);
}
return 0;
}
시간복잡도>
N(N+1)/2
-> N^2/2 + N/2
-> N^2/2
-> N^2
= O(N^2)
'IT_Fundamental > 알고리즘' 카테고리의 다른 글
퀵정렬 (0) | 2019.08.12 |
---|---|
삽입정렬 (0) | 2019.08.12 |
버블정렬 (0) | 2019.08.12 |
Comments