Notice
Recent Posts
Recent Comments
Link
제이슨의 개발이야기
합병정렬 MergeSort 코틀린 Kotlin 설명x 본문
728x90
반응형
class mergeSort {
fun sort(){
var array = arrayOf(9,41,2,3,1,10,8,6)
array= mergeSort(0,array.size-1,array)
for(i in array.indices){
println(array[i])
}
}
fun mergeSort(start : Int ,end : Int , array : Array<Int>) : Array<Int>{
var arraylist = array
if(start>=end){
return arraylist
}
var mid = (start+end)/2
arraylist=mergeSort(start,mid,arraylist)
arraylist=mergeSort(mid+1,end,arraylist)
arraylist= merge(start , mid , end , arraylist)
return arraylist
}
fun merge(start : Int, mid : Int, end : Int, array : Array<Int>) : Array<Int>{
var leftStart = start
var rightStart = mid+1
var num = start
var temp = IntArray(array.size)
while(true){
if(array[leftStart]>array[rightStart]){
temp[num] = array[rightStart]
rightStart++
num++
} else if(array[leftStart]<=array[rightStart]){
temp[num] = array[leftStart]
num++
leftStart++
}
if(leftStart>mid){
for(i in rightStart..end){
temp[num] = array[i]
num++
}
for(i in start..end){
array[i] = temp[i]
}
return array
}else if(rightStart>end){
for(i in leftStart..mid){
temp[num] = array[i]
num++
}
for(i in start..end){
array[i] = temp[i]
}
return array
}
}
}
}
합병정렬
장점 : 다른 정렬에 비해 안정적이고 O(nlogn) 으로 효율적이다
퀵 정렬은 최악의 경우 O(N제곱) 이 되지만 합병정렬은 최악의 경우에도 O(nlogn)이다
단점 : 이미 정렬된 경우에 sort를 진행 할 경우에도 O(nlogn)이다
버블 정렬일 경우에는 O(n)으로 정렬된 경우에는 버블 정렬이 더 효과적이다
728x90
반응형
'알고리즘' 카테고리의 다른 글
백준 17827 달팽이 리스트 코틀린[kotlin] (0) | 2022.11.24 |
---|---|
프로그래머스 소수찾기 2단계 코틀린 완전탐색 (0) | 2021.09.21 |
삽입정렬 InsertSort 코틀린(Kotlin) (0) | 2021.08.26 |
Bubble Sort (버블소트) 코틀린 Kotlin (0) | 2021.08.23 |
[java] Merge Sort(합병정렬) (0) | 2021.02.06 |