#1 알고리즘
정렬 알고리즘은 여러 가지가 있다. 상황에 맞추어 가장 적절한 알고리즘을 골라야 하지만, 나는 알고리즘을 공부 중이므로 사용해 보지 않은 정렬 알고리즘 중에 아무거나 골라서 사용한다. 이 문제에 사용할 알고리즘은 버블 정렬(Bubble Sort)이다.
#2 코드
#2-1 자바
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int arrayLength = sc.nextInt();
sc.nextLine(); // 입력 버퍼의 첫째 줄 비워내기
int[] array = new int[arrayLength];
for (int i = 0; i < array.length; i++) {
array[i] = Integer.parseInt(sc.nextLine().trim());
}
bubbleSort(array, 0, array.length - 1);
for(int i = 0; i < array.length; i++) {
System.out.println(Integer.toString(array[i]));
}
}
private static void bubbleSort(int[] array, int startIndex, int endIndex) {
for(int maxIndex = endIndex; startIndex < maxIndex; maxIndex--) {
boolean isSorted = true;
// 배열의 0 ~ (maxIndex - 1)번째 원소를 순회한다
for(int i = 0; i < maxIndex; i++) {
//해당 원소가 바로 오른쪽 원소보다 크면 값을 서로 교환한다
if(array[i + 1] < array[i]) {
int temp = array[i + 1];
array[i + 1] = array[i];
array[i] = temp;
isSorted = false;
}
}
// 교환이 한번도 일어나지 않았다면 정렬 작업을 종료한다
if(isSorted) {
break;
}
}
}
}
#2-2 코틀린
fun main() {
val arrayLength = readln()!!.trim().toInt()
val array : Array<Int> = Array(arrayLength) { 0 }
for(i : Int in 0..(array.size - 1)) {
array[i] = readln()!!.trim().toInt()
}
bubbleSort(array, 0, (array.size - 1))
for(i : Int in 0..(array.size - 1)) {
println(array[i].toString())
}
}
fun bubbleSort(array: Array<Int>, startIndex : Int, endIndex : Int) {
for(maxIndex : Int in endIndex downTo (startIndex + 1)) {
var isSorted = true
// 배열의 0 ~ (maxIndex - 1)번째 원소를 순회한다
for(i : Int in 0..(maxIndex - 1)) {
// 해당 원소가 바로 오른쪽 원소보다 크면 값을 서로 교환한다
if(array[i + 1] < array[i]) {
val temp = array[i + 1]
array[i + 1] = array[i]
array[i] = temp
isSorted = false
}
}
// 교환이 한번도 일어나지 않았다면 정렬 작업을 종료한다
if(isSorted) {
break
}
}
}
'문제 풀이 > 정렬' 카테고리의 다른 글
[백준] 11651 (좌표 정렬하기 2) (0) | 2023.11.28 |
---|---|
[백준] 11650 (좌표 정렬하기) (0) | 2023.11.18 |
[백준] 10989 (수 정렬하기 3) (0) | 2023.11.17 |
[백준] 2751 (수 정렬하기 2) (0) | 2023.11.15 |
[백준] 1181 (단어 정렬) (0) | 2023.10.28 |