2012-01-31 1 views
2

O (N) 시간에 정수 배열을 정렬 할 수있는 알고리즘을 만들려고합니다.O (n) 시간에 n 개의 숫자가있는 0 ... n의 정수 배열 정렬

  • 는 intergers 모두의 자릿수는 각 요소의 숫자가 분배되는 방법에 관계없이, 알고리즘은 O (N)의 배열을 정렬한다
  • 자릿수 알려지지 수 시간이 N

나는 O (N) 시간에 실행되는이 문제에 대한 해결 방법을 가지고 있습니다. 나는 그렇게하는 것으로 증명하려고하는 데 어려움을 겪고 있습니다.

Create a set of N buckets and add items to their corresponding bucket based off how 
many digits are in the integer -O(N) 

Radix sort each bucket, and then concatenate the buckets back together. 
Sum k=0 to N of O(k*n) 
k = Number of digits 
n = number of items with k digits 

내가 함께 온 솔루션은 그 ∑k*∑n 것입니다 내가 유도 단계를 수행하는 방법에 확실 해요

Base case: Array has 1 item. 
T(N)= k*1. k=N = O(N) 

증명 항상 동일한 N.

시도 (필요하다면).

+0

귀하의 기수 정렬의 아이디어는 당신이 생각하는 것보다 더 비싼 수 있습니다. 예 : N = 4, array = [1,23,456,7890] – ElKamina

+0

@ElKamina, 귀하의 예에서는 끝 0을 제거하고 n = 9 – Kent

답변

2

다음 스크린 샷을 설명합니다

screenshot

+0

고맙습니다. – lcs

+1

소스를 사용할 때 소스를 링크하거나 크레디트하는 것이 일반적입니다. – RBarryYoung