SlideShare a Scribd company logo
Week12. Bucket Sort
O (n)
입력이 균등 분포라고 가정
버킷 단위로 나누고, 정렬해 잇자
입력의 범위가 균등한 입력 A n개의 버킷으로 나누어 정렬
입력이 균등하다면 버킷당 정렬 시간은
O(1)에 가까워 질 것이다
Bucket Sort Time Complexity & Pseudocode
1
2
3
4
O(n) 버킷 초기화
O(n) 해당하는 버킷에 원소 넣기
n * O(2-1/n) = θ(n) 버킷마다 삽입 정렬
O(n) 버킷들 잇기
θ(n) + n * O(2-1/n) = θ(n)
(버킷별 원소 개수)2
Bucket Sort Kotlin
fun bucketSort(A: List<Double>) {
val size = A.size
val bucket = Array<ArrayList<Double>>(size) { ArrayList() }
A.forEachIndexed { index, t ->
bucket[Math.floor(size.toDouble() * A[index]).toInt()]
}
bucket.forEach {
it.insertionSort { d1, d2 -> d1 > d2 }
}
for(i in 1 until size) {
bucket[0].addAll(bucket[i])
}
}

More Related Content

PDF
Week11 counting radix_sort
PDF
Week10 quicksort performance
PDF
Week9 quicksort
PDF
Week7heapsort
PDF
Week4.maximumsubarray
PDF
Week3.asymtotic notation
PDF
Week11 ssh
PDF
Week10 vpn
Week11 counting radix_sort
Week10 quicksort performance
Week9 quicksort
Week7heapsort
Week4.maximumsubarray
Week3.asymtotic notation
Week11 ssh
Week10 vpn

More from HansolJang5 (6)

PDF
Week9 certificate
PDF
Week8 code
PDF
Week7. sso and oauth
PDF
Week3.network
PDF
Week2.network
PDF
Week1. 물리계층과 데이터링크 계층
Week9 certificate
Week8 code
Week7. sso and oauth
Week3.network
Week2.network
Week1. 물리계층과 데이터링크 계층
Ad

Week12 bucket sort

  • 1. Week12. Bucket Sort O (n) 입력이 균등 분포라고 가정 버킷 단위로 나누고, 정렬해 잇자 입력의 범위가 균등한 입력 A n개의 버킷으로 나누어 정렬 입력이 균등하다면 버킷당 정렬 시간은 O(1)에 가까워 질 것이다
  • 2. Bucket Sort Time Complexity & Pseudocode 1 2 3 4 O(n) 버킷 초기화 O(n) 해당하는 버킷에 원소 넣기 n * O(2-1/n) = θ(n) 버킷마다 삽입 정렬 O(n) 버킷들 잇기 θ(n) + n * O(2-1/n) = θ(n) (버킷별 원소 개수)2
  • 3. Bucket Sort Kotlin fun bucketSort(A: List<Double>) { val size = A.size val bucket = Array<ArrayList<Double>>(size) { ArrayList() } A.forEachIndexed { index, t -> bucket[Math.floor(size.toDouble() * A[index]).toInt()] } bucket.forEach { it.insertionSort { d1, d2 -> d1 > d2 } } for(i in 1 until size) { bucket[0].addAll(bucket[i]) } }