문제
N개의 수가 주어졌을 때, 이를 오름차순 정렬하는 프로그램을 작성하시오.
- 1번째 줄에 수의 개수 N (1 <= N <= 1,000)
- 2번째 줄부터 N개의 줄에 숫자가 주어짐
- 수는 중복되지 않는다
문제 분석하기
숫자 범위가 1,000으로 매우 작기 때문에, O(N^2) 시간복잡도 알고리즘을 사용해도 문제 없음
버블정렬 알고리즘을 이용하여 문제풀이
슈도코드
N(정렬할 수 개수)
A(정렬할 배열 선언)
for(i : 0~N -1)
{
for(j : 0 ~ N -1 -i)
{
현재 A배열의 값보다 1칸 오른쪽 배열의 값이 더 작으면 두 수 바꾸기
}
}
A 배열 출력
구현
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class App {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int length = Integer.parseInt(br.readLine());
int []arr = new int[length];
for (int i =0; i < length; i++){
arr[i] = Integer.parseInt(br.readLine());
}
for (int i =0; i < arr.length; i++){
for(int j =0; j< arr.length -1 -i; j++){
if (arr[j] > arr[j+1]){
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
for (int i : arr) {
System.out.println(i);
}
}
}