Sorting in Linear Time Lecture 5 Asst. Prof. Dr. İlker Kocabaş.

Post on 18-Jan-2016

217 views 0 download

Transcript of Sorting in Linear Time Lecture 5 Asst. Prof. Dr. İlker Kocabaş.

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