공부 기록

공부기록, 2021-04-20

뉴코딩 2021. 4. 20. 20:28

코틀린에서 숫자를 입력받고 그 숫자를 bubbleSort로 정렬하는 알고리즘을 풀어보았다

== 프로그램 시작 ==

숫자(띄워쓰기로 구분) : 3 0 1 8 7 2 5 4 6 9

오름차순 정렬 결과 : 0 1 2 3 4 5 6 7 8 9

내림차순 정렬 결과 : 9 8 7 6 5 4 3 2 1 0

== 프로그램 끝 ==

 

fun main(){
println("== 프로그램 시작 ==")
print("숫자(띄워쓰기로 구분) : ")
val numbers = readLine()!!.trim().split(" ").map { it.toInt() }.toMutableList()
bubbleSort(numbers)

print("오름차순 정렬 결과 : ")
printNumbers(numbers)

print("내림차순 정렬 결과 : ")
reversePrintNumbers(numbers)

println("== 프로그램 종료 ==")
}

fun reversePrintNumbers(numbers: MutableList<Int>) {
for (number in numbers.reversed()){
print("$number ")
}
println()
}

fun printNumbers(numbers: MutableList<Int>) {
for (number in numbers){
print("$number ")
}
println()
}

fun bubbleSort(numbers: MutableList<Int>) {
val lastIndex = numbers.size -1
var depth = lastIndex

loop1@while (depth >= 1 ){
for (i in 0 until depth){
if(i == depth-1 && numbers[i] < numbers[i+1]){
depth-=2
continue@loop1
}
if(numbers[i] > numbers[i+1]){
numbers[i] = numbers[i+1].also { numbers[i+1] = numbers[i] }
}
}
depth--
}
}