Java程序辅导

C C++ Java Python Processing编程在线培训 程序编写 软件开发 视频讲解

客服在线QQ:2653320439 微信:ittutor Email:itutor@qq.com
wx: cjtutor
QQ: 2653320439
Searching and Sorting [Bono] 1
Sorting; Searching review
• Sorting
– insertion sort
– mergesort
• Compare various possible Map implementations
Announcements
• MT 2 on Tuesday 4/5 9:30am PDT
– closed book, closed note
– no electronic devices
– bring pencils/pens
– bring USC ID card
– Remote students: same setup as last time (except you 
will also get a separate code handout document: don't 
submit it)
– room assignments will be posted on piazza today
• Next week: there will be a C++ lab.  Do readings ahead of 
time.
• No lab meetings or lab assignment this week.
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 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
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 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
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
Insertion sort example
5         10         3         7         6
Searching and Sorting [Bono] 6
POLL question
• What do we know about the array after performing 
the first three passes of insertion sort?
Searching and Sorting [Bono] 7
Asynchronous participation: Link to Insertion sort poll
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] 8
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] 9
Mergesort example
5        10        3        7        26        6        12        8
Searching and Sorting [Bono] 10
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] 11
Searching and Sorting [Bono] 12
Comparing different time bounds
source: cmglee using CC license.  
from Wikipedia page: Computational complexity of mathematical operations
number of 
operations 
size of input
Searching and Sorting [Bono] 13
Compare Map representations
• Recall Map operations:
lookup by key
insert (key, value)
remove by key
visit elements in order by key
or visit elements any order
• What are possible data structures we could use to 
implement?
Comparing big-O for Map operations
operation ordered
array
ordered
list
unordered
array
unordered
list
balanced
search tree
hash
table
lookup by 
key
insert
(key, value)
remove by 
key
visit
elements in 
order by key
O(n)
visit
elements any 
order
O(n)
Searching and Sorting [Bono] 14
representations
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] 15