수안보중학교 로고이미지

RSS 페이스북 공유하기 트위터 공유하기 카카오톡 공유하기 카카오스토리 공유하기 네이버밴드 공유하기 프린트하기
⁠13. 10~30사이의 난수 10개를 발생시켜 오름차순으로 거품정렬하는 프로그램을 작성하
작성자 수안보중학교 등록일 19.09.25 조회수 24

13. 1030사이의 난수 10개를 발생시켜 오름차순으로 거품정렬하는 프로그램을 작성하시오.
 
<프로그램 소스>
#include <stdio.h> // printf()
#include <stdlib.h> // rand(), RAND_MAX
#include <time.h> // time()
//***********************************************************
// a[]의 각 요소를 올림차순으로 정렬. n : a[]의 요소수
//***********************************************************
void GPmJRyul(int a[], int n)
{
int i, j, ghwan, imsi;
 
for (i=0 ; i<n-1 ; i++) // n-1 회전 비교/교환
{
ghwan = 0;
for (j=0 ; j<n-i-1 ; j++) // i-1번 비교/교환
if (a[j] > a[j+1]) // 크면 두 값을 교환
{
imsi = a[j];
a[j] = a[j+1];
a[j+1] = imsi;
ghwan = 1; // 교환 발생
}
if (ghwan==0) // 교환이 한번도 일어나지 않았으면
return;
}
}
//***********************************************************
int main()
{
int nsu[10];
int i, N=10;
 
// 실행시마다 다른 계열의 난수가 발생되게 한다
srand( time(NULL) );
 
// 10 ~ 30 사이의 난수 10 개를 발생시킨다
puts("\n정렬전");
for (i=0 ; i<N ; i++)
{
nsu[i] = rand() % 21 + 10;
printf("%d ", nsu[i]);
}
GPmJRyul(nsu, N);
 
puts("\n\n정렬후");
for (i=0 ; i<N ; i++)
printf("%d ", nsu[i]);
printf("\n");
}
 
<출력결과>

정렬전
25 26 10 12 12 14 11 17 18 29
 
정렬후
10 11 12 12 14 17 18 25 26 29

 

이전글 14. 6개의 문자를 출력결과와 같이 정렬하는 프로그램을 작성하시오.
다음글 ⁠12. 5명 10문제 O, X채점하여 출력 결과와 같이 점수를 구하는 프로그램을 작성하시