ncue csie wireless communications and networking laboratory chapter 7 search and sort 1

Post on 28-Dec-2015

216 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

NCUE CSIE Wireless Communications and Networking Laboratory

CHAPTER 7

SEARCH AND SORTSEARCH AND SORT

1

NCUE CSIE Wireless Communications and Networking Laboratory

Search

Ⅰ. Internal v.s External search

Ⅱ. Static v.s Dynamic search

2

NCUE CSIE Wireless Communications and Networking Laboratory

Ⅲ. Partial key v.s whole key search

Ⅳ. Actual key v.s Transformation key

Search-Linear SearchBinary SearchFibonacci SearchInterpolation Search

3

Search

NCUE CSIE Wireless Communications and Networking Laboratory

If list has n records, with list[i].key referring to the key value for record i, then we can search the list by examining the key values list[0].key,…,list[n-1].key, in that order, until the correct record is located, or we have examined all the records in the list. Since we examine the records in sequence, this searching technique is known as a sequential search.

4

1 2 3 4 ... ... n-2 n-1 n

… …

2

1)....321(

n

n

n

Linear Search

Average comparison

NCUE CSIE Wireless Communications and Networking Laboratory

• This search begins by comparing searchnum and list[middle].key where middle .There are three possible outcomes:

searchnum< list[middle].key: In this case, we discard the records between list[middle] and list[n-1], and continue the search with the records between list[0] and list[middle-1].

5

2

)1(

n

Binary Search

NCUE CSIE Wireless Communications and Networking Laboratory

searchnum = list[middle].key:

In this case, the search terminates successfully.

searchnum > list[middle].key: In this case, we discard the records between list[0] and list[middle] and continue the search with the records between list[middle+1] and list[n-1].

6

Binary Search

NCUE CSIE Wireless Communications and Networking Laboratory

Procedure BinSearch (f: afile ; var i:integer ; n,k:integer)

Var done : boolean ; l,u,m: integer ;Begin

l:=1 ; u:=n ; i:=0 ; done:=false ; while ((l<=u) and(not done)) do Begin

m:=(l+u) div 2 ; case compare( k , f[m].key) of

〝 > 〞 : l := m+1 {Look in upper half}

〝 = 〞 : Begin

i:=m ; done:= true ; End ; 〝 < 〞 : u:=m-1 ; {Look in lower half}

end ; {of case}

End ; {of while}

End ; {of BinSearch}

7

Binary Search

NCUE CSIE Wireless Communications and Networking Laboratory

Number =12

Decision tree is

8

Binary Search

NCUE CSIE Wireless Communications and Networking Laboratory

Binary

1.Time Complexity

∵T(n) = T(n/2)+1 , T(1) = 1

∴T(n) = O( )

2.If n is small Sequential Search

n is large Binary Search

9

n2log

Binary Search

NCUE CSIE Wireless Communications and Networking Laboratory

Fibonacci Search F0=0 , F1 = 1 , Fi = Fi-1+Fi-2,i 2≧

0,1,1,2,3,5,8,13,21,34,55,…

〝 Fa+m = n+1 〞

(1)n:record number

(2)Fa: the largest Fibonacci number and

it is n+1 )≦ (3)m: 0≧ and it is natural number

10

Fibonacci Search

NCUE CSIE Wireless Communications and Networking Laboratory

(1)If n= 33, Fa = ? m = ?

Steps 1.Find the largest Fibonacci number ( ≦n+1≦ 34 )→ F9

Steps 2.m= (n+1)-Fa = 34-34=0

11

n 0 1 2 3 4 5 6 7 8 9

Fn 0 1 1 2 3 5 8 13 21 34

Fibonacci Search

NCUE CSIE Wireless Communications and Networking Laboratory

Advantage & Disadvantage:

12

Fibonacci Search

NCUE CSIE Wireless Communications and Networking Laboratory

Compare and

f[u].key , f[l].key is the largest value and the smallest value

Campare (k , f[l].key)

〝 = 〞 : find

〝 < 〞 :u=(l+i)-1

〝 > 〞 :l=(l+i)+1

13

)1(].[].[

].[

lukeylfkeyuf

keylfki

keylf ].1[ k

Interpolation Search

NCUE CSIE Wireless Communications and Networking Laboratory

CategoriesCategories:

(1) Internal or External Sorting?

(2) Stable or Unstable Sorting?

(3) Time Complexity

14

Sorting

NCUE CSIE Wireless Communications and Networking Laboratory

The step of 26 、 5 、 49 、 13 、 6

Ans: (1)5 、 26 、 49 、 13 、 6

(2)5 、 26 、 49 、 13 、 6

(3)5 、 13 、 26 、 49 、 6

(4)5 、 6 、 13 、 26 、 49

15

Insertion Sort

NCUE CSIE Wireless Communications and Networking Laboratory

Algorithm

(1)Insert(r, A[ ],i) Dubroutines

(2)Insort(A[ ],n) main

(1)

Procedure Insert(r , A[ ], i)

Var j : integer ;Begin

j:= i ;While r.key<list[j].key Do Begin

list[j+1]:=list[j] ; j:= j-1 ;End ; List[j+i]:= r ;End ;

16

NCUE CSIE Wireless Communications and Networking Laboratory

(2)

Procedure Insort(Var list : afile ; n:Integer) ;Var j: Integer ;Begin

list[0].key:= -∞ ; for j:= 2 to n do

insert (list[j], list, j-1) ;End ;

17

Insertion Sort

NCUE CSIE Wireless Communications and Networking Laboratory

Ⅰ. Time complexity :

worst case & average case = O( )

best case= O(n) n-1 Comparative

Ⅱ. Insertion Sort is stable

e.g ……5… 5+ …

after:……5…… 5+ …

Ⅲ. Space Complexity = O(1)

18

2n

Insertion Sort

NCUE CSIE Wireless Communications and Networking Laboratory

64 25 12 22 11

-> 11 25 12 22 64

-> 11 12 25 22 64

-> 11 12 22 25 64 -> 11 12 22 25 64

19

Selection Sort

NCUE CSIE Wireless Communications and Networking Laboratory

Procedure SelectSort(R,n)Begin For i:= 1 to n-1 do Begin m := i ; For j = i+1 to n do If kj< km then m := j ; End ; {of For loop} If i < > m then Begin Swap (Ri,Rm) ; End ;End ; {of SelectSort}

20

Selection Sort

NCUE CSIE Wireless Communications and Networking Laboratory

Ⅰ. Time complexity:

Best 、 Average 、 Worst case=O(n2)

Ⅱ. Space complexity : O(1)

Ⅲ. unstable sort

e.g.

pass1:

pass2:

21

2.5.5

5.5.2

5.5.2

Selection Sort

NCUE CSIE Wireless Communications and Networking Laboratory

Bubble sort, is a simple sorting algorithm that works by repeatedly stepping through the list to be sorted, comparing each pair of adjacent items and swapping them if they are in the wrong order. The pass through the list is repeated until no swaps are needed, which indicates that the list is sorted.

e.g. Step of 26 、 5 、 47 、 19 、 6

pass1 :5 、 26 、 19 、 6 、 47

pass2 :5 、 19 、 26 、 6 、 47

pass3 :5 、 6 、 19 、 26 、 47

pass4 :5 、 6 、 19 、 26 、 4722

Bubble Sort

NCUE CSIE Wireless Communications and Networking Laboratory

Procedure BubbleSort(R, n)Begin for i=1 to (n-1) do begin f = 0; for j=1 to (n-1) do if R[j+1].key<R[j].key then [swap(Rj, Rj+1); f=1; ] if f=0 then exit // No swap: exit// end;End; {of BubbleSort}

23

Bubble Sort

NCUE CSIE Wireless Communications and Networking Laboratory

Ⅰ. Time complexity :

Best case : O(n)

Worst case : O(n2)

Average case : O(n2)

Ⅱ . Bubble Sort is a stable sort

Ⅲ. Space complexity : O(1)

24

Bubble Sort

NCUE CSIE Wireless Communications and Networking Laboratory

25

Given: (R0, R1, R2, R3, ……….., Rn-3, Rn-2 Rn-1)

After first pass: R1, ..…, RS(i)-1, R0, RS(i), RS(i)+1, …, RS(n-1)

Pivot key

i j

two partitions

Quick Sort

NCUE CSIE Wireless Communications and Networking Laboratory

R1 R2 R3 R4 R5 R6 R7 R8 R9 R10

26 5 37 1 61 11 59 15 48 19

11 5 19 1 15 26 59 61 48 37

1 5 11 19 15 26 59 61 48 37

1 5 11 15 19 26 59 61 48 37

1 5 11 15 19 26 48 37 59 61

1 5 11 15 19 26 37 48 59 61

1 5 11 15 19 26 37 48 59 61

1 5 11 15 19 26 37 48 59 61

26

Quick Sort

NCUE CSIE Wireless Communications and Networking Laboratory

void procedure QuickSort(list, m, n) if (m<n) then i=m, j=n+1, p.k.=list[m].key Repeat repeat i=i+1 until list[i].key ≥p.k. repeat j=j-1 until list[i].key ≤p.k. if (i<j) then swap(list[i], list[j]) Until i ≥ j swap(list[m], list[j]) QuickSort(list, m, j-1) QuickSort(list, j+1, n)End ; {of if}End ; {of Qsort}

27

Quick Sort

NCUE CSIE Wireless Communications and Networking Laboratory

Ⅰ. Time complexity:

Best case

T(n)= c*n + 2T( )

= 4*T ( )+2cn

= n*T ( )+

= n+ cnlogn

= O(nlogn)28

2

n

4

n

n

n cnnlog

Quick Sort

NCUE CSIE Wireless Communications and Networking Laboratory

Worst caseT(n) cn + T(n-1)≦ ≦ cn + T( cn + T(n-2)) ≦ 2cn + T(n-2) ≦ 3cn + T(n-3) . . ≦ (n-1)cn + T(1) = O( )

29

2n

Quick Sort

NCUE CSIE Wireless Communications and Networking Laboratory

Average case-> Time complexity is O(nlogn)

Ⅱ. Quick Sort is unstable

Ⅲ. Space complexity: O(logn)~O(n)

30

Quick Sort

NCUE CSIE Wireless Communications and Networking Laboratory

It merges the sorted lists(list[i],…,list[m]) and (list[m+1],…,list[n]), into a single sorted list,(sorted[i],…,sorted[n]).

Merge sort:•Iterative•Recursive

31

Merge Sort

NCUE CSIE Wireless Communications and Networking Laboratory

e.g. 26 、 5 、 77 、 1 、 61 、 11 、 59 、 15 、 48 、 19

[26] [5] [77] [1] [61] [11] [59] [15] [48] [19]

[ 5 、 26 ] [ 1 、 77 ] [ 11 、 61 ] [ 15 、 59 ] [19 、 48 ]

[ 1 、 5 、 26 、 77 ] [11 、 15 、 59 、 61] [19 、 48]

[1 、 5 、 11 、 15 、 19 、 26 、 48 、 59 、 61 、 77]

32

Iterative

NCUE CSIE Wireless Communications and Networking Laboratory

Ⅰ. Time complexity:

Best , Worst , Average case is O(nlogn)

Ⅱ . stable

Ⅲ. Require O(n) Space

33

)(nT1n 1, if

1 ,)2

(2 nifcnn

T

Iterative

NCUE CSIE Wireless Communications and Networking Laboratory

26 、 5 、 77 、 1 、 61 、 11 、 59 、 15 、 48、 19

[5 、 26] [77] [1 、 61] [11 、 59] [15] [19 、 48]

[5 、 26 、 77] [1 、 61] [11 、 15 、 59] [19 、 48]

[1 、 5 、 26 、 61 、 77] [11 、 15 、 19 、 48、 59]

[1 、 5 、 11 、 15 、 19 、 26 、 48 、 59 、 61、 77]

34

Recursive

NCUE CSIE Wireless Communications and Networking Laboratory

Procedure rMergeSort (Var x:afile ; l, u:Integer ; Var p:Integer )

Begin

If l u Then p:=l≧ else Begin

mid := (1+u) div 2 ; rMergeSort(x,l,mid,q) ; //left

rMergeSort(x,mid+1,u,r) ; //right

ListMerge(x,q,r,p) ; //merge

End ; {of if}

End ; {of rMergeSort}

35

Recursive

NCUE CSIE Wireless Communications and Networking Laboratory

Heap sort begins by building a heap out of the data set, and then removing the largest item and placing it at the end of the partially sorted array.

After removing the largest item, it reconstructs the heap, removes the largest remaining item, and places it in the next open position from the end of the partially sorted array. This is repeated until there are no items left in the heap and the sorted array is full.

36

Heap Sort

NCUE CSIE Wireless Communications and Networking Laboratory

37

Example: 35 、 21 、 37 、 15 、 52 、 15+ 、 5 、 40

Heap Sort

NCUE CSIE Wireless Communications and Networking Laboratory

38

Heap Sort

1. 2.

output 52 output 40

NCUE CSIE Wireless Communications and Networking Laboratory

3. 4.

output 37 output 35

39

Heap Sort

NCUE CSIE Wireless Communications and Networking Laboratory

5. 6.

output 21 output 15

40

Heap Sort

NCUE CSIE Wireless Communications and Networking Laboratory

7. 8.

output 15+ output 5

41

Heap Sort

NCUE CSIE Wireless Communications and Networking Laboratory

Ⅰ. Time complexity: Best, Average, Worst case is O(nlogn)

Ⅱ. Unstable method

Ⅲ. Space complexity: O(1)

42

Heap Sort

NCUE CSIE Wireless Communications and Networking Laboratory

• LSD radix sort(1)If r is base -> r buckets(2)If m digit -> m steps

43

Radix Sort

NCUE CSIE Wireless Communications and Networking Laboratory

179 、 208 、 306 、 93 、 859 、 984 、 55 、 9 、 271 、 33 Radix sort

Pass 1.

(Single-digit)

Merge:271 、 93 、 33 、 984 、 55 、 306 、 208 、 179 、 859 、 9

44

0 1 2 3 4 5 6 7 8 9

9

33 859

271 93 984 55 306 208 179

Radix Sort

NCUE CSIE Wireless Communications and Networking Laboratory

Pass 2. (tens'digit)

Merge:306 、 208 、 9 、 33 、 55 、 859 、 271 、 179 、 984 、 93

Pass 3. (hundreds'digit)

Merge:9 、 33 、 55 、 93 、 179 、 208 、 271 、 306 、 859 、 984

45

0 1 2 3 4 5 6 7 8 9

93

55

33 271

9 179 208 306 859 984

0 1 2 3 4 5 6 7 8 9

9

208 859 179

306 33 55 271 984 93

Radix Sort

NCUE CSIE Wireless Communications and Networking Laboratory

Ⅰ. Time complexity :

d is the largest number of keys, n=data, r = base

Ⅱ. Space complexity :

→ 〝 Bucket size 〞 = r * bucket*n

Ⅲ. Stable

46

))(( rndO

)( nrO

Radix Sort

NCUE CSIE Wireless Communications and Networking Laboratory

47

Summary

NCUE CSIE Wireless Communications and Networking Laboratory

Ellis Horowitz, Sartaj Sahni, and Susan Anderson-Freed〝 Fundamentals of Data Structures in C 〞 , W. H. Freeman & Co Ltd, 1992.

Ellis Horowitz, Sartaj Sahni, and Dinesh Mehta〝 Fundamentals of Data Structures in C++ 〞 Silicon Pr, 2006

Richard F.Gilberg, Behrouz A. Forouzan, 〝 Data Structures: A Pseudocode Approach with C 〞 , SBaker & Taylor Books, 2004

Fred Buckley, and Marty Lewinter 〝 A Friendly Introduction to Graph Theory 〞 Prentice Hall, 2002

〝資料結構 - 使用 C 語言〞蘇維雅譯,松崗, 2004 〝資料結構 - 使用 C 語言 〞 蔡明志編著,全華, 2004 〝資料結構 ( 含精選試題 ) 〞洪逸編著,鼎茂, 2005

48

Reference

top related