Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Sorting in Linear Time Lecture 5 Asst. Prof. Dr. İlker Kocabaş."— Presentation transcript:

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

2 How fast can we sort?

3 Decision-tree example

4

5

6

7

8

9 Lower Bound for decision-tree sorting

10 Lower bound for comparison sorting

11 Sorting in linear time Counting something, like histograms, can help us to sort an array. –clr = getcolor(x,y) –count[ clr ]++; Limitation: count[0..255]

12 Sorting in linear time

13 Counting sort COUNTING-SORT(A,B,k) // Initialize aux. store // Count how many times occurred. // Cumulative sums of aux. store // ???

14 Counting-sort example

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29 Analysis

30 Running Time

31 Stable sorting

32 Counting sort array size limitation problem If we need sort 32 bits integers, size of count array 2 32 = 4GB ! Unsorted array size is usually smaller than this (1KB << 4GB) Solution... Use smaller parts like digits and sort these parts particularly : Radix sort

33 Radix sort

34 Operation of radix sort

35 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))

36 Analysis 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-2 r ) 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 2 r -1 = 2 8 -1=255. r=8

37 Analysis of radix sort: Choosing r 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.

38 Analysis of radix sort: Choosing r

39

40 Conclusions

41 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.

42 Bucket Sort

43 .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

44 Bucket Sort Running time:

45 Bucket Sort

46

47

48

49

50

51 Order Statistics

52

53

54

55

56

57

58

59

60

61

62

63 Hairy recurrence (cont.)

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87


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

Similar presentations


Ads by Google