N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
-> 2학년 1학기에 배웠던 자료구조에서 여러가지 정렬 방법을 배웠는데 그 중에 가장 편하게 사용할 수 있었던게 버블 정렬이라 해당 문제는 버블 정렬을 이용해서 풀었다. 간단하게 배열에 값들을 저장하고 앞에서부터 시작해 2개를 비교해서 만약 인덱스 값이 더 작은 값이 더 큰 값을 가지고 있다면 두 개의 위치를 바꿔주는 형식으로 진행했다. 포인트가 되는 부분은 변수 A를 이용해서 값을 한 번 저장하고 변경하는 것 같다.
for (int k = 0; k < 1000; k++)
{
for (int j = 0; j < N - 1; j++)
{
if (Ary[j] > Ary[j + 1])
{
A = Ary[j];
Ary[j] = Ary[j + 1];
Ary[j + 1] = A;
}
}
}
버블정렬을 사용했는데 반복하는 횟수를 많이 해주지 않아서 문제를 틀렸다. 해결하기 위해 반복 횟수만 증가시키니 해결!
자료구조 시간에 많은 정렬에 대해서 배웠는데 막상 생각해보니 기억나는 부분이 많이 없는 것 같다..주말에는 정렬에 대해서 간단하게라도 정리를 해서 블로그에 올리며 정리를 해야겠다.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int N;
int A;
int B;
scanf("%d", &N);
int Ary[1000] = { 0, };
for (int i = 0; i < N; i++)
{
scanf("%d", &Ary[i]);
}
for (int k = 0; k < 1000; k++)
{
for (int i = 0; i < N - 1; i++)
{
if (Ary[i] > Ary[i + 1])
{
A = Ary[i];
Ary[i] = Ary[i + 1];
Ary[i + 1] = A;
}
}
}
for (int b = 0; b < N; b++)
{
printf("%d\n", Ary[b]);
}
}