티스토리 뷰

C/정올

1146 : 선택정렬

j0n9m1n1 j0n9m1n1 2016.06.06 20:24

1146 : 선택정렬

제한시간: 1Sec    메모리제한: 32mb
해결횟수: 848회    시도횟수: 2469회   



선택 정렬(selection sort)이란 내부정렬 알고리즘의 하나로 다음 순서대로 실행하여 정렬을 한다.

1. 주어진 수열 중에 최소값을 찾는다.
2. 찾은 최소값을 맨 앞의 값과 자리를 바꾼다.
3. 맨 앞의 값을 뺀 나머지 수열을 같은 방법으로 전체 개수-1번 반복 실행한다.

n개의 주어진 수열을 위와 같은 방법으로 정렬한다.

수열이 주어지면 선택정렬의 과정을 한 단계씩 출력한다.

 

첫줄에 수열의 길이 N(4≤N≤100)이 주어진다.

두 번째 줄에 N개의 0이상 100이하의 정수가 주어진다.



처음 상태를 제외하고 정렬과정의 각 단계별 결과를 "출력형식"과 같이 출력한다.


 [Copy]
5
6 4 8 3 1
 [Copy]
1 4 8 3 6
1 3 8 4 6
1 3 4 8 6
1 3 4 6 8


#include <stdio.h>


int main(){

int i, j, k, N, temp, min = 0, num[100] = {0, };

scanf("%d", &N);

for(i = 0; i < N; i++){

scanf("%d", &num[i]);

}

for(i = 0; i < N - 1; i++){

min = i;

for(j = i + 1; j < N; j++){

if(num[j] < num[min]){

min = j;

}

}

temp = num[i];

num[i] = num[min];

num[min] = temp;

for(k = 0; k < N; k++){

printf("%d ", num[k]);

}

puts("");

}

}

'C > 정올' 카테고리의 다른 글

1039 : 도미노  (0) 2016.06.06
1146 : 선택정렬  (0) 2016.06.06
1157 : 버블정렬  (0) 2016.06.06
1071 : 약수와 배수  (0) 2016.06.06
1307 : 문자사각형1  (0) 2016.06.06
1303: 숫자사각형1  (0) 2016.06.06
댓글
댓글쓰기 폼