searching and sorting · searching and sorting [bono] 2. sorting •input is an array of values:...

14
Searching and Sorting [Bono] 1 Searching and Sorting Hash tables (cont – from Thur slides) using HashMap/HashSet (cont.) – big-O – applications • Sorting insertion sort – mergesort Compare various possible Map implementations

Upload: others

Post on 23-Aug-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Searching and Sorting · Searching and Sorting [Bono] 2. Sorting •Input is an array of values: [10, 3, 52, 60, 12, 9, 7, 17] •Output is the same values in the same array, but

Searching and Sorting [Bono] 1

Searching and Sorting

• Hash tables (cont – from Thur slides)– using HashMap/HashSet (cont.)– big-O– applications

• Sorting– insertion sort– mergesort

• Compare various possible Map implementations

Page 2: Searching and Sorting · Searching and Sorting [Bono] 2. Sorting •Input is an array of values: [10, 3, 52, 60, 12, 9, 7, 17] •Output is the same values in the same array, but

Announcements

• PA4 is due in 1+ week.• C++ lab assignment this week – do readings ahead

of time• Mon 10/26 "supplemental" lecture is required

course material

Searching and Sorting [Bono] 2

Page 3: Searching and Sorting · Searching and Sorting [Bono] 2. Sorting •Input is an array of values: [10, 3, 52, 60, 12, 9, 7, 17] •Output is the same values in the same array, but

Sorting• Input is an array of values:

[10, 3, 52, 60, 12, 9, 7, 17]• Output is the same values in the same array, but in

order:[3, 7, 9, 10, 12, 17, 52, 60]

• (some sorts also work on linked lists)• Many sort algorithms• We’ll discuss just a few today.

Searching and Sorting [Bono] 3

Page 4: Searching and Sorting · Searching and Sorting [Bono] 2. Sorting •Input is an array of values: [10, 3, 52, 60, 12, 9, 7, 17] •Output is the same values in the same array, but

One sorting algorithm• Insertion sort• based on inserting into a sorted list/array• e.g., populating a Names object:

– repeated calls to insert method– using ordered partially-filled array representation

• insert one element:– use linear or binary search to find correct spot– shift values over to make room for new value

• How much time (big-O) to create a Names object with n elements this way?

Searching and Sorting [Bono] 4

Page 5: Searching and Sorting · Searching and Sorting [Bono] 2. Sorting •Input is an array of values: [10, 3, 52, 60, 12, 9, 7, 17] •Output is the same values in the same array, but

Searching and Sorting [Bono] 5

Insertion sort

• Insertion sort in place in an array:

ordered part unordered part

ordered part unordered part

1st unordered partinitially:

put element k+1 in correct spot in ordering

before pass k:

after pass k:

has k+1 elmts

Page 6: Searching and Sorting · Searching and Sorting [Bono] 2. Sorting •Input is an array of values: [10, 3, 52, 60, 12, 9, 7, 17] •Output is the same values in the same array, but

Insertion sort example

5 10 3 7 6

Searching and Sorting [Bono] 6

Page 7: Searching and Sorting · Searching and Sorting [Bono] 2. Sorting •Input is an array of values: [10, 3, 52, 60, 12, 9, 7, 17] •Output is the same values in the same array, but

Fast sorts• Other O(n2) (not fast) sorts:

selection sort, bubble sort.• Fastest general purpose sorts are O(nlogn): quicksort,

mergesort, heapsort• We'll discuss mergesort in more detail:• Basic operation is the merge

– reminder what merge problem is:input1: [3, 7, 12, 18] (ordered list)input2: [2, 5, 15, 20, 27] (ordered list)output: [2, 3, 5, 7, 12, 15, 18, 20, 27] (ordered list)

– we discussed fast merge algorithm in big-O lecture:• merge of 2 lists of length n takes 2n

Searching and Sorting [Bono] 7

Page 8: Searching and Sorting · Searching and Sorting [Bono] 2. Sorting •Input is an array of values: [10, 3, 52, 60, 12, 9, 7, 17] •Output is the same values in the same array, but

Mergesort• Think of each element as a sorted list of len 1• Merge each of them pairwise.

– Now have n/2 sorted lists of len 2• Merge each of those pairwise.

– Now have n/4 sorted lists of len 4. . .• Eventually merge 2 sorted lists of len n/2

• Big-O?– How much time for all the merges at a level?– How many levels total?

Searching and Sorting [Bono] 8

Page 9: Searching and Sorting · Searching and Sorting [Bono] 2. Sorting •Input is an array of values: [10, 3, 52, 60, 12, 9, 7, 17] •Output is the same values in the same array, but

Mergesort example5 10 3 7 26 6 12 8

Searching and Sorting [Bono] 9

Page 10: Searching and Sorting · Searching and Sorting [Bono] 2. Sorting •Input is an array of values: [10, 3, 52, 60, 12, 9, 7, 17] •Output is the same values in the same array, but

Merge sort: another example of tree recursion

• Recursive solution very short! (similar to tree traversal code)

void mergesort(array){if (array.length > 1) {

mergesort(first half);mergesort(second half);array =

merge (first half, second half);}

}

Searching and Sorting [Bono] 10

Page 11: Searching and Sorting · Searching and Sorting [Bono] 2. Sorting •Input is an array of values: [10, 3, 52, 60, 12, 9, 7, 17] •Output is the same values in the same array, but

Searching and Sorting [Bono] 11

Comparing different time bounds

source: cmglee using CC license. from Wikipedia page: Computational complexity of mathematical operations

number of operations

size of input

Page 12: Searching and Sorting · Searching and Sorting [Bono] 2. Sorting •Input is an array of values: [10, 3, 52, 60, 12, 9, 7, 17] •Output is the same values in the same array, but

Searching and Sorting [Bono] 12

Compare Map representations

• Recall Map operations:lookup by keyinsert (key, value)remove by keyvisit elements in order by key

or visit elements any order

• What are possible data structures we could use to implement?

Page 13: Searching and Sorting · Searching and Sorting [Bono] 2. Sorting •Input is an array of values: [10, 3, 52, 60, 12, 9, 7, 17] •Output is the same values in the same array, but

Comparing big-O for Map operations

operation orderedarray

orderedlist

unorderedarray

unorderedlist

balancedsearch tree

hashtable

lookup by key

insert(key, value)

remove by key

visitelements in order by key

O(n)

visitelements any order

O(n)

Searching and Sorting [Bono] 13

representations

Page 14: Searching and Sorting · Searching and Sorting [Bono] 2. Sorting •Input is an array of values: [10, 3, 52, 60, 12, 9, 7, 17] •Output is the same values in the same array, but

Summary

• Usually you don’t have to implement binary search, sort, binary search, binary trees

• E.g., Java library methods / classes provide them.• Do need to be able to compare algorithms and

representations (complexity)• Should I use an array? ArrayList? LinkedList?

TreeMap? for my app?

Searching and Sorting [Bono] 14