Sorting in Linear TimeSorting in Linear Time
Lecture 5
Asst. Prof. Dr. İlker Kocabaş
How fast can we sort?How fast can we sort?
Decision-tree exampleDecision-tree example
Decision-tree exampleDecision-tree example
Decision-tree exampleDecision-tree example
Decision-tree exampleDecision-tree example
Decision-tree exampleDecision-tree example
Decision-tree exampleDecision-tree example
Lower Bound for decision-tree Lower Bound for decision-tree sortingsorting
Lower bound for comparison Lower bound for comparison sortingsorting
Sorting in linear timeSorting in linear time
• Counting something, like histograms, can help us to sort an array. – clr = getcolor(x,y)– count[ clr ]++; Limitation: count[0..255]
Sorting in linear timeSorting in linear time
Counting sortCounting sort
COUNTING-SORT(A,B,k)
// Initialize aux. store
// Count how many times occurred.
// Cumulative sums of aux. store
// ???
Counting-sort exampleCounting-sort example
Counting-sort exampleCounting-sort example
Counting-sort exampleCounting-sort example
Counting-sort exampleCounting-sort example
Counting-sort exampleCounting-sort example
Counting-sort exampleCounting-sort example
Counting-sort exampleCounting-sort example
Counting-sort exampleCounting-sort example
Counting-sort exampleCounting-sort example
Counting-sort exampleCounting-sort example
Counting-sort exampleCounting-sort example
Counting-sort exampleCounting-sort example
Counting-sort exampleCounting-sort example
Counting-sort exampleCounting-sort example
Counting-sort exampleCounting-sort example
AnalysisAnalysis
Running TimeRunning Time
Stable sortingStable sorting
Counting sort array size Counting sort array size limitation problemlimitation problem
• If we need sort 32 bits integers, size of count array 232 = 4GB !
• Unsorted array size is usually smaller than this (1KB << 4GB)
• Solution... Use smaller parts like digits and sort these parts particularly : Radix sort
Radix sortRadix sort
Operation of radix sortOperation of radix sort
Analysis of radix sort Analysis of radix sort
• Given n d-digit number in which each digit can take on up to k-possible values, the running time of RADIX-SORT sorts these numbers is
(d*(n+k))
Analysis of radix sortAnalysis of radix sort
•Assume counting sort is the auxilary sort.•Sort n computer words of b-bits each.•Each word can be viewed as having d=b/r (base-2r) digits.
Example: Each key having d-digits of r bits. Let d=4, r=8 (b=32) then each digit is an integer in the
range 0 to 2r-1 = 28-1=255.
r=8 r=8 r=8 r=8
)}2)(/{()}2({)}({)( rr nrbndkndnT
Analysis of radix sort: Choosing Analysis of radix sort: Choosing rr
• How many passes should we make?• Each word of length b=rd bit is broken into r-bit
pieces.• For a given word length of b, the running time of an
array of length n that is T(r|n,b) can be minimized with respect to r.
Analysis of radix sort: Choosing Analysis of radix sort: Choosing rr
Analysis of radix sort: Choosing Analysis of radix sort: Choosing rr
ConclusionsConclusions
What about floating points?What about floating points?
• Integer can countable or divisible to parts.
• How can speed up sorting array of floating point numbers.
• We can group into k-parts– For numbers beetween 0.0 ≤ f ≤ 1.0– k*f have an integer part like 8.71– int(k*f) is part number.– k can be length of array.
Bucket SortBucket Sort
orderin together 1,...,1,0 lists theeconcatanet 6
sortinsertion with list sort 5
1 to0 4
list into insert 3
to1 2
1
SORT(A)-BUCKET
nBBB
iB
ni
inABiA
ni
Alengthn
do
for
do
for
Bucket SortBucket Sort
.78
.17
.39
.26
.72
.94
.21
.12
.23
.68
1
2
3
4
5
6
7
8
9
10
A
0
1
3
4
5
6
7
B
9
.17 /.12
.21
.78 /
.26 /
.68 /
.72
.94 /
.23
8
2
Bucket SortBucket Sort
Running time:
1
0
2 )()()(n
iinOnnT
Bucket SortBucket Sort
)()(
)()(
)()()(
1
0
2
1
0
2
1
0
2
n
ii
n
ii
n
ii
nEOn
nOEn
nOnEnTE
Bucket SortBucket Sort
n
jiji
ij
Xn
ijAX
1
else:0
bucket in falls ][:1Let
Bucket SortBucket Sort
n
nji
n
jknk
ikij
n
jij
n
j
n
njiik
n
jknk
ijij
n
jik
n
kij
n
jiji
XXEXE
XXXE
XXE
XEnE
11
2
1 1
2
1 1
2
1
2
Bucket SortBucket Sort
2
2
1
11
t.independen are and variables the,When
1
110
11
n
nnXXE
XXjk
n
nnXE
ikij
ikij
ij
Bucket SortBucket Sort
n
nnn
nn
nnnE
n
nji
n
jknk
n
ii
12
1)1(
1
11
2
12
1
2
Bucket SortBucket Sort
)(
)/12()()(
n
nOnnnT
1
0
2 )()()(n
iinOnnT
Order StatisticsOrder Statistics
Hairy recurrence (cont.)Hairy recurrence (cont.)
8
3
48
3
2)1
2(
2
)1(
2
)1(
2)1
2(
2
21
2/
1
2/
1
2/
12/
1
1
1
1
0
n
nnnnnnk
nnk
nn
kkkk
n
nk
n
nk
n
nk
n
k
n
k
n
k
Top Related