반응형
※ 정렬 : 특정 기준을 적용하여 나열한다.
※ 선택 정렬 : 최솟값을 계속 앞으로 이동 시킴 (기준 : 오름차순)
아직 정렬하지 않은 부분에서 값이 가장 작은 요소를 선택하고 아직 정렬하지 않은 부분의 첫 번째 요소와 교환
6 4 8 3 1 9 7 : 1을 6과 교환
1 4 8 3 6 9 7 : 3을 4와 교환 ..반복
결과 : 1 3 4 6 7 8 9
※ 구현
#include
int main() {
int n;
int data[10] ;
scanf("%d", &n);
//입력
for(int i=0; i<n; i++){ scanf("%d", &data[i]); }
/*
최솟값 구하기
1. j의 위치를 하나씩 증가 시키면서 data[j]의 값과 현재 data[index]의 값을 비교
2. data[j]의 값이 data[index]보다 작을 경우 index의 값을 j의 값으로 바꿔줌
3. j의 위치 또 증가시켜줌
4. data[j]의 값이 data[index]보다 작을 경우 index를 또 새로운 j의 값으로 바꿔줌
5. 반복하여 가장 작은 값의 위치 j를 index에 넣어줌
*/
for(int i=0; i <n; i++){
int index = i;
for(int j = i ; j < n ; j++){
if(data[index] > data[j]){
index = j ;
}
}
//swap
int temp ;
temp = data[i];
data[i] = data[index];
data[index] = temp;
}
//출력
for(int i = 0 ; i <n ; i++){ printf("%d", data[i]); }
return 0;
}
반응형
'개발 > algorithm' 카테고리의 다른 글
[C/C++][algorithm] 버블정렬 (0) | 2019.10.30 |
---|---|
[C/C++][algorithm] 삽입정렬 (0) | 2019.10.30 |
[java][algorithm]검색 - 선형검색, 이진검색(binarySearch) (0) | 2018.10.28 |
[java][algorithm]소수 구하기 (0) | 2018.10.07 |
[java][algorithm] 기수 변환 (10진수 정수 n진수 정수로 변환) (0) | 2018.10.07 |