CP222 Computer Science II. Recurrence Relations and Basic Sorting

Size: px
Start display at page:

Download "CP222 Computer Science II. Recurrence Relations and Basic Sorting"

Transcription

1 CP222 Computer Science II Recurrence Relations and Basic Sorting

2 Amazon raising Prime subscription price to $119 Tech News!

3 Tech News! Amazon raising Prime subscription price to $119 Golden State Killer identified partially through the use of onilne genealogy databases

4 Running times of: - bag methods - linked list methods - stack methods - queue methods

5 Fingerprinters?

6 class Stopwatch { private long start_time; public Stopwatch() { start_time = System.currentTimeMillis(); } } public double elapsedtime() { long now = System.currentTimeMillis(); return (now start) / ; }

7 Recursion Some problems can be solved elegantly by first solving a smaller, related problem We can model this technique using recursive methods: methods that call themselves

8 The Two Rules of Recursion Rule 1: The recursion has to stop somewhere Infinite recursion is not helpful

9 The Two Rules of Recursion Rule 1: The recursion has to stop somewhere Infinite recursion is not helpful Rule 2: Each recursive call should get the program closer to the stopping point Recursive calls solve a smaller version of the original problem

10 The Two Rules of Recursion Rule 1: Base case Rule 2: Recursive case

11 Recursive Example: Factorial What is 7 factorial?

12 Recursive Example: Factorial What is 7 factorial? 7 * 6!

13 Recursive Example: Factorial What is 6 factorial? 6 * 5!

14 Factorial Base case (n == 1) Recursive case (n > 1)

15 Factorial Base case (n == 1) : result = 1 Recursive case (n > 1) : result = n * factorial(n -1)

16 Recursively print out a Linked List function printlisthelper(node): if node is not null: print node printlisthelper(node.getneighbor()) function printlist(): printlisthelper(first)

17 Recursively print out a Linked List Time complexity? function printlisthelper(node): if node is not null: print node printlisthelper(node.getneighbor()) function printlist(): printlisthelper(first)

18 Time Complexity of Recursion Based on two things: Number of operations in the recursive method Number of recursive calls

19 Time Complexity of Recursion Based on two things: Number of operations in the recursive method Number of recursive calls Define a recurrence relation

20 Recurrence Relation T(n) = T(n-1) + 3 T(0) = 0

21 Recurrence Relation T(n) = T(n-1) + 3 T(0) = 0 Number of operations for input size, n

22 Recurrence Relation Number of operations for input size, n - 1 T(n) = T(n-1) + 3 T(0) = 0

23 Recurrence Relation There are 3 extra steps (check if, print node, get neighbor) T(n) = T(n-1) + 3 T(0) = 0

24 Recurrence Relation Base case: no nodes, no steps. T(n) = T(n-1) + 3 T(0) = 0

25 Find closed form solution for the relation T(n) = T(n-1) + 3

26 Find closed form solution for the relation T(n) = T(n-1) + 3 = [T(n-2) + 3] + 3 Why can we rewrite this way?

27 Find closed form solution for the relation T(n) = T(n-1) + 3 = [T(n-2) + 3] + 3 = T(n-2) + 6

28 Find closed form solution for the relation T(n) = T(n-2) + 6 = [T(n-3) + 3] + 6 = T(n-3) + 9

29 Find closed form solution for the relation T(n) = T(n-i) + 3i

30 Find closed form solution for the relation T(n) = T(n-i) + 3i Let i = n = T(n-n) + 3n

31 Find closed form solution for the relation T(n) = T(n-i) + 3i = T(n-n) + 3n = T(0) + 3n O(n) T(n) = 3n

32 Recurrence Relation? public void guessnumber(int bottom, int top) { int guess = (top + bottom) / 2; System.out.println( Is it + guess +? ); String response = myscanner.next(); if (response.equals( y )) { System.out.println( I win. Good game. ); } else if (response.equals( h )) { guessnumber(guess, top); } else { guessnumber(bottom, guess); } }

33 Guess Number Recurrence Relation T(n) = T(n/2) + 5 T(1) = 1

34 Guess Number Recurrence Relation T(n) = T(n/2) + c T(1) = c

35 Solve the recurrence relation? T(n) = T(n/2) + c T(1) = c

36 Solve it! T(n) = T(n/2) + c = [T(n/4) + c] + c = T(n/4) + 2c

37 Solve it! T(n) = T(n/4) + 2c = [T(n/8) + c] + 2c = T(n/8) + 3c

38 Step Expression 1 T(n/2) + c 2 T(n/4) + 2c 3 T(n/8) + 3c k???

39 T(n) = T(n/2 k ) + kc Solve it!

40 Solve it! T(n) = T(n/2 k ) + kc Set k = log 2 (n) Why?

41 Solve it! T(n) = T(n/2 k ) + kc Set k = log 2 (n) So 2 k = n

42 Solve it! T(n) = T(n/2 k ) + kc Set k = log 2 (n) So 2 k = n T(n) = T(1) + c log 2 (n) T(n) = c + c log 2 (n)

43 Solve it! T(n) = T(n/2 k ) + kc Set k = log 2 (n) So 2 k = n T(n) = T(1) + c log 2 (n) O(log 2 (n)) T(n) = c + c log 2 (n)

44 Searching and Sorting Given a data structure, how do we find a particular element? How long does it take? How can we put data into sorted order? How can we do it quickly?

45 Suppose we want to write a program to check if a bingo is legal in Scrabble. We have a dictionary of legal Scrabble words.

46 Is Bingo Legal? // Assume we have an ArrayList of legal words // called words public boolean islegal(string possiblebingo) { for (int i = 0; i < words.size(); i++) { if (possiblebingo.equals(words.get(i))) { return true; } } return false; }

47 What is the time complexity of islegal()? Best case? Average case? Worst case?

48 This process is called linear search.

49 Do humans use linear search when checking if words are legal when playing Scrabble?

50 If we assume the wordlist is sorted, can we search with fewer comparisons?

51 Binary Search // Assume words is in sorted order islegal(possiblebingo, start, end): if start == end: return false else: nextindex = (start + end) / 2 current = words[nextindex] if (current == possiblebingo) { return true; } else if (current < possiblebingo) { return islegal(possiblebingo, nextindex + 1, end) } else { return islegalhelper(possiblebingo, start, nextindex - 1) }

52 OK, binary search is faster. How do we get the wordlist in sorted order in the first place?

53 Sorting Problem [ 8, 3, 1, 7, 9, 2, 4 ] [ 1, 2, 3, 4, 7, 8, 9 ]

54 How do humans sort?

55 Selection Sort Algorithm Find smallest element left to be sorted This is done by linear search Put it at the end of the sorted part of the list For the first smallest, put it at the very beginning of the list The next smallest goes at position 2, etc.

56 Selection Sort [ 8, 3, 1, 7, 9, 2, 4 ]

57 Selection Sort [ 8, 3, 1, 7, 9, 2, 4 ] Scan list (linearly) for smallest element

58 Selection Sort [ 8, 3, 1, 7, 9, 2, 4 ] Here's the smallest.

59 Selection Sort [ 8, 3, 1, 7, 9, 2, 4 ] Flip the position of the smallest with the next unsorted value.

60 Selection Sort [ 1, 3, 8, 7, 9, 2, 4 ] Flip the position of the smallest with the next unsorted value.

61 Selection Sort [ 1, 3, 8, 7, 9, 2, 4 ] Part of the list is now sorted.

62 Selection Sort [ 1, 3, 8, 7, 9, 2, 4 ] Find the smallest element not in the sorted part of the list.

63 Selection Sort [ 1, 3, 8, 7, 9, 2, 4 ] Here's the next smallest.

64 Selection Sort [ 1, 3, 8, 7, 9, 2, 4 ] Flip it with the first unsorted element.

65 Selection Sort [ 1, 2, 8, 7, 9, 3, 4 ] Flip it with the first unsorted element.

66 Selection Sort [ 1, 2, 3, 4, 7, 8, 9 ] How long does the algorithm take with a length n array?

67 Insertion Sort Algorithm Maintain two parts of the list: unsorted and sorted For each unsorted element, insert it into the sorted part of the list in the correct location This insertion may require shifting values over to make room

68 Insertion Sort [ 8, 3, 1, 7, 9, 2, 4 ]

69 Insertion Sort [ 8, 3, 1, 7, 9, 2, 4 ] The sorted part of the array starts out as just the first value.

70 Insertion Sort [ 8, 3, 1, 7, 9, 2, 4 ] The rest of the list is unsorted.

71 Insertion Sort [ 8, 3, 1, 7, 9, 2, 4 ] Start with the next unsorted element.

72 Insertion Sort [ 8, 3, 1, 7, 9, 2, 4 ] Insert it in the correct location of the sorted part of the list. Here it needs to go before the 8.

73 Insertion Sort [ 8, 3, 1, 7, 9, 2, 4 ] There isn't space before the 8, so we have to shift the 8 up.

74 Insertion Sort [ 8, 3, 1, 7, 9, 2, 4 ] Before we shift the 8, we store the 3 somewhere else so it is not lost. key = 3

75 Insertion Sort [ 8, 8, 1, 7, 9, 2, 4 ] 8 is now shifted. key = 3

76 Insertion Sort [ 3, 8, 1, 7, 9, 2, 4 ] Now put the key value in its correct location. key = 3

77 Insertion Sort [ 3, 8, 1, 7, 9, 2, 4 ] Now this part of the list is sorted.

78 Insertion Sort [ 3, 8, 1, 7, 9, 2, 4 ] Repeat the process for the next unsorted element.

79 Insertion Sort [ 3, 8, 1, 7, 9, 2, 4 ] key = 1 Set the key.

80 Insertion Sort [ 3, 8, 1, 7, 9, 2, 4 ] key = 1 Find its insertion point.

81 Insertion Sort [ 3, 8, 1, 7, 9, 2, 4 ] key = 1 Shift both 3 and 8 up. Start by shifting 8. Why?

82 Insertion Sort [ 3, 8, 8, 7, 9, 2, 4 ] key = 1 8 was shifted.

83 Insertion Sort [ 3, 3, 8, 7, 9, 2, 4 ] key = 1 3 was shifted.

84 Insertion Sort [ 1, 3, 8, 7, 9, 2, 4 ] key = 1 Insert the key.

85 InsertionSort.java

86 InsertionSort.java vs. SelectionSort.java

87 Bubble Sort Algorithm Bubble up larger values to the end of the list Scan through the unbubbled elements two at a time If the second of the two elements is smaller, flip their positions Now make the second element the new first and get the next element from the list as the new second

88 Bubble Sort [ 8, 3, 1, 7, 9, 2, 4 ] Compare the first two elements.

89 Bubble Sort [ 8, 3, 1, 7, 9, 2, 4 ] The second one is smaller, so flip them.

90 Bubble Sort [ 3, 8, 1, 7, 9, 2, 4 ] The second one is smaller, so flip them.

91 Bubble Sort [ 3, 8, 1, 7, 9, 2, 4 ] Compare the next group of two.

92 Bubble Sort [ 3, 8, 1, 7, 9, 2, 4 ] The second one is smaller, so flip them.

93 Bubble Sort [ 3, 1, 8, 7, 9, 2, 4 ] The second one is smaller, so flip them.

94 Bubble Sort [ 3, 1, 8, 7, 9, 2, 4 ] See how 8 is bubbling up?

95 Bubble Sort [ 3, 1, 8, 7, 9, 2, 4 ] Compare next two. Second is smaller.

96 Bubble Sort [ 3, 1, 7, 8, 9, 2, 4 ] Flip them.

97 Bubble Sort [ 3, 1, 7, 8, 2, 4, 9 ] At the end of the process the largest element has bubbled up.

98 Bubble Sort [ 3, 1, 7, 8, 2, 4, 9 ] Now bubble up the next largest element.

99 Bubble Sort [ 1, 3, 7, 2, 4, 8, 9 ] Stop bubbling up when you reach the values that have already bubbled.

100 Obama Bubble

101 BREAK!

CP222 Computer Science II. Searching and Sorting

CP222 Computer Science II. Searching and Sorting CP222 Computer Science II Searching and Sorting New Boston Dynamics wheeled robot Tech News! Tech News! New Boston Dynamics wheeled robot Man charged with arson based on pacemaker data Quiz! How do you

More information

Analyzing Complexity of Lists

Analyzing Complexity of Lists Analyzing Complexity of Lists Operation Sorted Array Sorted Linked List Unsorted Array Unsorted Linked List Search( L, x ) O(logn) O( n ) O( n ) O( n ) Insert( L, x ) O(logn) O( n ) + O( 1 ) O( 1 ) + O(

More information

Q1 Q2 Q3 Q4 Q5 Q6 Total

Q1 Q2 Q3 Q4 Q5 Q6 Total Name: SSN: Computer Science Foundation Exam May 5, 006 Computer Science Section 1A Q1 Q Q3 Q4 Q5 Q6 Total KNW KNW KNW ANL,DSN KNW DSN You have to do all the 6 problems in this section of the exam. Partial

More information

Review. CSE 143 Java. A Magical Strategy. Hash Function Example. Want to implement Sets of objects Want fast contains( ), add( )

Review. CSE 143 Java. A Magical Strategy. Hash Function Example. Want to implement Sets of objects Want fast contains( ), add( ) Review CSE 143 Java Hashing Want to implement Sets of objects Want fast contains( ), add( ) One strategy: a sorted list OK contains( ): use binary search Slow add( ): have to maintain list in sorted order

More information

Topics Applications Most Common Methods Serial Search Binary Search Search by Hashing (next lecture) Run-Time Analysis Average-time analysis Time anal

Topics Applications Most Common Methods Serial Search Binary Search Search by Hashing (next lecture) Run-Time Analysis Average-time analysis Time anal CSC212 Data Structure t Lecture 18 Searching Instructor: George Wolberg Department of Computer Science City College of New York @ George Wolberg, 2016 1 Topics Applications Most Common Methods Serial Search

More information

Searching and Sorting

Searching and Sorting CS 211 SEARCH & SORT SEARCHING & SORTING Searching and Sorting Searching means that we have some collection of data, and we seek a particular value that might be contained within our collection. We provide

More information

Sorting. Task Description. Selection Sort. Should we worry about speed?

Sorting. Task Description. Selection Sort. Should we worry about speed? Sorting Should we worry about speed? Task Description We have an array of n values in any order We need to have the array sorted in ascending or descending order of values 2 Selection Sort Select the smallest

More information

EXAMINATIONS 2016 TRIMESTER 2

EXAMINATIONS 2016 TRIMESTER 2 T E W H A R E W Ā N A N G A O T E Ū P O K O O T E I K A A M Ā U I VUW VICTORIA U N I V E R S I T Y O F W E L L I N G T O N EXAMINATIONS 2016 TRIMESTER 2 COMP103 INTRODUCTION TO DATA STRUCTURES AND ALGORITHMS

More information

CS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University

CS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University CS 112 Introduction to Computing II Wayne Snyder Department Boston University Today Recursive Sorting Methods and their Complexity: Mergesort Conclusions on sorting algorithms and complexity Next Time:

More information

Data Structures. Giri Narasimhan Office: ECS 254A Phone: x-3748

Data Structures. Giri Narasimhan Office: ECS 254A Phone: x-3748 Data Structures Giri Narasimhan Office: ECS 254A Phone: x-3748 giri@cs.fiu.edu Search Tree Structures Binary Tree Operations u Tree Traversals u Search O(n) calls to visit() Why? Every recursive has one

More information

Computer Science. Section 1B

Computer Science. Section 1B Computer Science Foundation Exam August 8, 2008 Computer Science Section 1B KEY Name: SSN: Max Pts Passing Pts Category Q1 10 6 KNW Q2 8 4 CMP Q3 12 8 ANL Q4 8 6 DSN Q5 12 8 DSN Total 50 32 Score You have

More information

Faculty of Science FINAL EXAMINATION COMP-250 A Introduction to Computer Science School of Computer Science, McGill University

Faculty of Science FINAL EXAMINATION COMP-250 A Introduction to Computer Science School of Computer Science, McGill University NAME: STUDENT NUMBER:. Faculty of Science FINAL EXAMINATION COMP-250 A Introduction to Computer Science School of Computer Science, McGill University Examimer: Prof. Mathieu Blanchette December 8 th 2005,

More information

Fundamental problem in computing science. putting a collection of items in order. Often used as part of another algorithm

Fundamental problem in computing science. putting a collection of items in order. Often used as part of another algorithm cmpt-225 Sorting Sorting Fundamental problem in computing science putting a collection of items in order Often used as part of another algorithm e.g. sort a list, then do many binary searches e.g. looking

More information

Sorting & Searching (and a Tower)

Sorting & Searching (and a Tower) Sorting & Searching (and a Tower) Sorting Sorting is the process of arranging a list of items into a particular order There must be some value on which the order is based There are many algorithms for

More information

About this exam review

About this exam review Final Exam Review About this exam review I ve prepared an outline of the material covered in class May not be totally complete! Exam may ask about things that were covered in class but not in this review

More information

SAMPLE OF THE STUDY MATERIAL PART OF CHAPTER 6. Sorting Algorithms

SAMPLE OF THE STUDY MATERIAL PART OF CHAPTER 6. Sorting Algorithms SAMPLE OF THE STUDY MATERIAL PART OF CHAPTER 6 6.0 Introduction Sorting algorithms used in computer science are often classified by: Computational complexity (worst, average and best behavior) of element

More information

Sorting is ordering a list of objects. Here are some sorting algorithms

Sorting is ordering a list of objects. Here are some sorting algorithms Sorting Sorting is ordering a list of objects. Here are some sorting algorithms Bubble sort Insertion sort Selection sort Mergesort Question: What is the lower bound for all sorting algorithms? Algorithms

More information

While Loops A while loop executes a statement as long as a condition is true while condition: statement(s) Statement may be simple or compound Typical

While Loops A while loop executes a statement as long as a condition is true while condition: statement(s) Statement may be simple or compound Typical Recommended Readings Chapter 5 Topic 5: Repetition Are you saying that I am redundant? That I repeat myself? That I say the same thing over and over again? 1 2 Repetition So far, we have learned How to

More information

Fun facts about recursion

Fun facts about recursion Outline examples of recursion principles of recursion review: recursive linked list methods binary search more examples of recursion problem solving using recursion 1 Fun facts about recursion every loop

More information

Search,Sort,Recursion

Search,Sort,Recursion Search,Sort,Recursion Searching, Sorting and Recursion Searching Linear Search Inserting into an Array Deleting from an Array Selection Sort Bubble Sort Binary Search Recursive Binary Search Searching

More information

CSC 1351: Exam 2: Midterm

CSC 1351: Exam 2: Midterm VERSION C CSC 1351: Exam 2: Midterm 1 Recursion 1.1 From CodingBat. Given a string, compute recursively a new string where all the adjacent chars are now separated by a *. allstar (" hello ") -> "h*e*l*l*o"

More information

Search Trees. Computer Science S-111 Harvard University David G. Sullivan, Ph.D. Binary Search Trees

Search Trees. Computer Science S-111 Harvard University David G. Sullivan, Ph.D. Binary Search Trees Unit 9, Part 2 Search Trees Computer Science S-111 Harvard University David G. Sullivan, Ph.D. Binary Search Trees Search-tree property: for each node k: all nodes in k s left subtree are < k all nodes

More information

CS171 Midterm Exam. October 29, Name:

CS171 Midterm Exam. October 29, Name: CS171 Midterm Exam October 29, 2012 Name: You are to honor the Emory Honor Code. This is a closed-book and closed-notes exam. You have 50 minutes to complete this exam. Read each problem carefully, and

More information

KF5008 Algorithm Efficiency; Sorting and Searching Algorithms;

KF5008 Algorithm Efficiency; Sorting and Searching Algorithms; KF5008 Algorithm Efficiency; Sorting and Searching Algorithms; Efficiency: Principles An algorithm is a step-by-step procedure for solving a stated problem. The algorithm will be performed by a processor

More information

CompSci 201 Tree Traversals & Heaps

CompSci 201 Tree Traversals & Heaps CompSci 201 Tree Traversals & Heaps Jeff Forbes March 28, 2018 3/28/18 CompSci 201, Spring 2018, Heaps 1 R is for R Programming language of choice in Stats Random From Monte-Carlo to [0,1) Recursion Base

More information

DO NOT. UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N.

DO NOT. UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N. CS61B Fall 2013 UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division Test #2 Solutions DO NOT P. N. Hilfinger REPRODUCE 1 Test #2 Solution 2 Problems

More information

Quicksort. Repeat the process recursively for the left- and rightsub-blocks.

Quicksort. Repeat the process recursively for the left- and rightsub-blocks. Quicksort As the name implies, this is the fastest known sorting algorithm in practice. It is excellent for average input but bad for the worst-case input. (you will see later). Basic idea: (another divide-and-conquer

More information

Some Search Structures. Balanced Search Trees. Binary Search Trees. A Binary Search Tree. Review Binary Search Trees

Some Search Structures. Balanced Search Trees. Binary Search Trees. A Binary Search Tree. Review Binary Search Trees Some Search Structures Balanced Search Trees Lecture 8 CS Fall Sorted Arrays Advantages Search in O(log n) time (binary search) Disadvantages Need to know size in advance Insertion, deletion O(n) need

More information

Lesson 12: Recursion, Complexity, Searching and Sorting. Modifications By Mr. Dave Clausen Updated for Java 1_5

Lesson 12: Recursion, Complexity, Searching and Sorting. Modifications By Mr. Dave Clausen Updated for Java 1_5 Lesson 12: Recursion, Complexity, Searching and Sorting Modifications By Mr. Dave Clausen Updated for Java 1_5 1 Lesson 12: Recursion, Complexity, and Searching and Sorting Objectives: Design and implement

More information

Recursive Algorithms. CS 180 Sunil Prabhakar Department of Computer Science Purdue University

Recursive Algorithms. CS 180 Sunil Prabhakar Department of Computer Science Purdue University Recursive Algorithms CS 180 Sunil Prabhakar Department of Computer Science Purdue University Recursive Algorithms Within a given method, we are allowed to call other accessible methods. It is also possible

More information

The smallest element is the first one removed. (You could also define a largest-first-out priority queue)

The smallest element is the first one removed. (You could also define a largest-first-out priority queue) Priority Queues Priority queue A stack is first in, last out A queue is first in, first out A priority queue is least-first-out The smallest element is the first one removed (You could also define a largest-first-out

More information

Chapter 9. Priority Queue

Chapter 9. Priority Queue Chapter 9 Priority Queues, Heaps, Graphs Spring 2015 1 Priority Queue Priority Queue An ADT in which only the item with the highest priority can be accessed 2Spring 2015 Priority Depends on the Application

More information

B-Trees. Based on materials by D. Frey and T. Anastasio

B-Trees. Based on materials by D. Frey and T. Anastasio B-Trees Based on materials by D. Frey and T. Anastasio 1 Large Trees n Tailored toward applications where tree doesn t fit in memory q operations much faster than disk accesses q want to limit levels of

More information

Unit 10: Sorting/Searching/Recursion

Unit 10: Sorting/Searching/Recursion Unit 10: Sorting/Searching/Recursion Notes AP CS A Searching. Here are two typical algorithms for searching a collection of items (which for us means an array or a list). A Linear Search starts at the

More information

CS 137 Part 8. Merge Sort, Quick Sort, Binary Search. November 20th, 2017

CS 137 Part 8. Merge Sort, Quick Sort, Binary Search. November 20th, 2017 CS 137 Part 8 Merge Sort, Quick Sort, Binary Search November 20th, 2017 This Week We re going to see two more complicated sorting algorithms that will be our first introduction to O(n log n) sorting algorithms.

More information

Data Structures. Giri Narasimhan Office: ECS 254A Phone: x-3748

Data Structures. Giri Narasimhan Office: ECS 254A Phone: x-3748 Data Structures Giri Narasimhan Office: ECS 254A Phone: x-3748 giri@cs.fiu.edu Motivation u Many applications where Items have associated priorities Job scheduling Long print jobs vs short ones; OS jobs

More information

CS103L SPRING 2017 UNIT 8: RECURSION

CS103L SPRING 2017 UNIT 8: RECURSION CS103L SPRING 2017 UNIT 8: RECURSION RECURSION A recursion function is defined in terms of itself Applies to math, e.g. recursion relations, sequences Fibonacci: F 0 = 1, F 1 = 1, F n = F n-1 + F n-2 Applies

More information

Model Solutions. COMP 103: Mid-term Test. 21st of August, 2014

Model Solutions. COMP 103: Mid-term Test. 21st of August, 2014 Family Name:............................. Other Names:............................. ID Number:............................... Signature.................................. Instructions Time allowed: 50 minutes

More information

CS 315 Data Structures mid-term 2

CS 315 Data Structures mid-term 2 CS 315 Data Structures mid-term 2 1) Shown below is an AVL tree T. Nov 14, 2012 Solutions to OPEN BOOK section. (a) Suggest a key whose insertion does not require any rotation. 18 (b) Suggest a key, if

More information

Recursion. What is Recursion? Simple Example. Repeatedly Reduce the Problem Into Smaller Problems to Solve the Big Problem

Recursion. What is Recursion? Simple Example. Repeatedly Reduce the Problem Into Smaller Problems to Solve the Big Problem Recursion Repeatedly Reduce the Problem Into Smaller Problems to Solve the Big Problem What is Recursion? A problem is decomposed into smaller sub-problems, one or more of which are simpler versions of

More information

CP122 CS I. Chapter 13: Recursion

CP122 CS I. Chapter 13: Recursion CP122 CS I Chapter 13: Recursion Russian law banning VPNs comes into effect today Tech News! Tech News! Russian law banning VPNs comes into effect today Shelley: AI to write horror story openings THE PATH

More information

Introduction to Computers and Programming. Today

Introduction to Computers and Programming. Today Introduction to Computers and Programming Prof. I. K. Lundqvist Lecture 10 April 8 2004 Today How to determine Big-O Compare data structures and algorithms Sorting algorithms 2 How to determine Big-O Partition

More information

Instructions PLEASE READ (notice bold and underlined phrases)

Instructions PLEASE READ (notice bold and underlined phrases) Assignment 4 Recursive and Sorting Methods Solutions Required Reading Java Foundations Chapter 13 Linked Structures Chapter 17 Recursion Chapter 18 Searching and Sorting Chapter 19 Trees Instructions PLEASE

More information

APCS Semester #1 Final Exam Practice Problems

APCS Semester #1 Final Exam Practice Problems Name: Date: Per: AP Computer Science, Mr. Ferraro APCS Semester #1 Final Exam Practice Problems The problems here are to get you thinking about topics we ve visited thus far in preparation for the semester

More information

CS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University

CS 112 Introduction to Computing II. Wayne Snyder Computer Science Department Boston University 0/6/6 CS Introduction to Computing II Wayne Snyder Department Boston University Today Conclusions on Iterative Sorting: Complexity of Insertion Sort Recursive Sorting Methods and their Complexity: Mergesort

More information

Priority Queues and Heaps

Priority Queues and Heaps Priority Queues and Heaps Data Structures and Algorithms CSE 373 SU 18 BEN JONES 1 Warm Up We have seen several data structures that can implement the Dictionary ADT so far: Arrays, Binary (AVL) Trees,

More information

Computer Science Foundation Exam. May 6, Computer Science. Section 1A. No Calculators! KEY. Score: 50

Computer Science Foundation Exam. May 6, Computer Science. Section 1A. No Calculators! KEY. Score: 50 Computer Science Foundation Exam May 6, 2005 Computer Science Section 1A No Calculators! Name: KEY SSN: Score: 50 In this section of the exam, there are four (4) problems. You must do all of them. The

More information

York University AS/AK/ITEC INTRODUCTION TO DATA STRUCTURES. Midterm Sample I. Examiner: S. Chen Duration: One Hour and 30 Minutes

York University AS/AK/ITEC INTRODUCTION TO DATA STRUCTURES. Midterm Sample I. Examiner: S. Chen Duration: One Hour and 30 Minutes York University AS/AK/ITEC 2620 3.0 INTRODUCTION TO DATA STRUCTURES Midterm Sample I Examiner: S. Chen Duration: One Hour and 30 Minutes This exam is closed textbook(s) and closed notes. Use of any electronic

More information

Divide & Conquer. 2. Conquer the sub-problems by solving them recursively. 1. Divide the problem into number of sub-problems

Divide & Conquer. 2. Conquer the sub-problems by solving them recursively. 1. Divide the problem into number of sub-problems Divide & Conquer Divide & Conquer The Divide & Conquer approach breaks down the problem into multiple smaller sub-problems, solves the sub-problems recursively, then combines the solutions of the sub-problems

More information

3. Priority Queues. ADT Stack : LIFO. ADT Queue : FIFO. ADT Priority Queue : pick the element with the lowest (or highest) priority.

3. Priority Queues. ADT Stack : LIFO. ADT Queue : FIFO. ADT Priority Queue : pick the element with the lowest (or highest) priority. 3. Priority Queues 3. Priority Queues ADT Stack : LIFO. ADT Queue : FIFO. ADT Priority Queue : pick the element with the lowest (or highest) priority. Malek Mouhoub, CS340 Winter 2007 1 3. Priority Queues

More information

Balanced Search Trees

Balanced Search Trees Balanced Search Trees Computer Science E-22 Harvard Extension School David G. Sullivan, Ph.D. Review: Balanced Trees A tree is balanced if, for each node, the node s subtrees have the same height or have

More information

CSC 222: Object-Oriented Programming Spring 2012

CSC 222: Object-Oriented Programming Spring 2012 CSC 222: Object-Oriented Programming Spring 2012 Searching and sorting sequential search algorithm analysis: big-oh, rate-of-growth binary search insertion sort, selection sort 1 Searching a list suppose

More information

EXAMINATIONS 2012 Trimester 1, MID-TERM TEST. COMP103 Introduction to Data Structures and Algorithms SOLUTIONS

EXAMINATIONS 2012 Trimester 1, MID-TERM TEST. COMP103 Introduction to Data Structures and Algorithms SOLUTIONS T E W H A R E W Ā N A N G A O T E Ū P O K O O T E I K A A M Ā U I VUW V I C T O R I A UNIVERSITY OF WELLINGTON Student ID:....................... EXAMINATIONS 2012 Trimester 1, MID-TERM TEST COMP103 Introduction

More information

Priority Queues. 04/10/03 Lecture 22 1

Priority Queues. 04/10/03 Lecture 22 1 Priority Queues It is a variant of queues Each item has an associated priority value. When inserting an item in the queue, the priority value is also provided for it. The data structure provides a method

More information

Sorting Algorithms. + Analysis of the Sorting Algorithms

Sorting Algorithms. + Analysis of the Sorting Algorithms Sorting Algorithms + Analysis of the Sorting Algorithms Insertion Sort What if first k elements of array are already sorted? 4, 7, 12, 5, 19, 16 We can shift the tail of the sorted elements list down and

More information

// a stack is printed from bottom (leftmost) to top (rightmost) System.out.println(stk);

// a stack is printed from bottom (leftmost) to top (rightmost) System.out.println(stk); CompSci 100 Test 2 Spring 2011 Prof. Rodger April 14, 2011 Some common recurrence relations T(n) = T(n/2) +O(1) O(log n) T(n) = T(n/2) +O(n) O(n) T(n) = 2T(n/2) +O(1) O(n) T(n) = 2T(n/2) +O(n) O(n log

More information

Recursion. CSE 2320 Algorithms and Data Structures University of Texas at Arlington

Recursion. CSE 2320 Algorithms and Data Structures University of Texas at Arlington Recursion CSE 2320 Algorithms and Data Structures University of Texas at Arlington Updated: 2/21/2018 1 Background & Preclass Preparation Background (review): Recursive functions Factorial must know how

More information

Department of Computer Science Admission Test for PhD Program. Part I Time : 30 min Max Marks: 15

Department of Computer Science Admission Test for PhD Program. Part I Time : 30 min Max Marks: 15 Department of Computer Science Admission Test for PhD Program Part I Time : 0 min Max Marks: 5 Each Q carries marks. ¼ mark will be deducted for every wrong answer. Part II of only those candidates will

More information

Module 2: Classical Algorithm Design Techniques

Module 2: Classical Algorithm Design Techniques Module 2: Classical Algorithm Design Techniques Dr. Natarajan Meghanathan Associate Professor of Computer Science Jackson State University Jackson, MS 39217 E-mail: natarajan.meghanathan@jsums.edu Module

More information

CSE 214 Computer Science II Searching

CSE 214 Computer Science II Searching CSE 214 Computer Science II Searching Fall 2017 Stony Brook University Instructor: Shebuti Rayana shebuti.rayana@stonybrook.edu http://www3.cs.stonybrook.edu/~cse214/sec02/ Introduction Searching in a

More information

Priority queues. Priority queues. Priority queue operations

Priority queues. Priority queues. Priority queue operations Priority queues March 30, 018 1 Priority queues The ADT priority queue stores arbitrary objects with priorities. An object with the highest priority gets served first. Objects with priorities are defined

More information

Searching and Sorting (Savitch, Chapter 7.4)

Searching and Sorting (Savitch, Chapter 7.4) Searching and Sorting (Savitch, Chapter 7.4) TOPICS Algorithms Complexity Binary Search Bubble Sort Insertion Sort Selection Sort What is an algorithm? A finite set of precise instruc6ons for performing

More information

OF VICTORIA EXAMINATIONS- DECEMBER 2010 CSC

OF VICTORIA EXAMINATIONS- DECEMBER 2010 CSC Name: ID Number: UNIVERSITY OF VICTORIA EXAMINATIONS- DECEMBER 2010 CSC 225 - Algorithms and Data Structures: I Section A01 (CRN 1089) Instructor: Wendy Myrvold Duration: 3 hours TO BE ANSWERED ON THE

More information

16. Searching and Sorting

16. Searching and Sorting 16. Searching and Sorting Java Fall 2009 Instructor: Dr. Masoud Yaghini Searching and Sorting Outline Searching Arrays Sorting Arrays Arrays Class References Searching Arrays Searching Arrays Searching

More information

CSCI 261 Computer Science II

CSCI 261 Computer Science II CSCI 261 Computer Science II Department of Mathematics and Computer Science ecture 10 Efficient Sorting Algorithms As If You Need More eminding... Search is one of the most frequently-used operations in

More information

Summer Final Exam Review Session August 5, 2009

Summer Final Exam Review Session August 5, 2009 15-111 Summer 2 2009 Final Exam Review Session August 5, 2009 Exam Notes The exam is from 10:30 to 1:30 PM in Wean Hall 5419A. The exam will be primarily conceptual. The major emphasis is on understanding

More information

Practical Session #11 - Sort properties, QuickSort algorithm, Selection

Practical Session #11 - Sort properties, QuickSort algorithm, Selection Practical Session #11 - Sort properties, QuickSort algorithm, Selection Quicksort quicksort( A, low, high ) if( high > low ) pivot partition( A, low, high ) // quicksort( A, low, pivot-1 ) quicksort( A,

More information

Recursion: The Beginning

Recursion: The Beginning Department of Computer Science and Engineering Chinese University of Hong Kong This lecture will introduce a useful technique called recursion. If used judiciously, this technique often leads to elegant

More information

What is an algorithm?

What is an algorithm? /0/ What is an algorithm? Searching and Sorting (Savitch, Chapter 7.) TOPICS Algorithms Complexity Binary Search Bubble Sort Insertion Sort Selection Sort A finite set of precise instrucons for performing

More information

CS 223: Data Structures and Programming Techniques. Exam 2. April 19th, 2012

CS 223: Data Structures and Programming Techniques. Exam 2. April 19th, 2012 CS 223: Data Structures and Programming Techniques. Exam 2 April 19th, 2012 Instructor: Jim Aspnes Work alone. Do not use any notes or books. You have approximately 75 minutes to complete this exam. Please

More information

York University. AP/ITEC Section M INTRODUCTION TO DATA STRUCTURES Winter Midterm Test

York University. AP/ITEC Section M INTRODUCTION TO DATA STRUCTURES Winter Midterm Test York University AP/ITEC 2620 3.0 Section M INTRODUCTION TO DATA STRUCTURES Winter 2016 Midterm Test Examiner: S. Chen Duration: One Hour and 30 Minutes This exam is closed textbook(s) and closed notes.

More information

COMP Data Structures

COMP Data Structures COMP 2140 - Data Structures Shahin Kamali Topic 5 - Sorting University of Manitoba Based on notes by S. Durocher. COMP 2140 - Data Structures 1 / 55 Overview Review: Insertion Sort Merge Sort Quicksort

More information

Algorithms and Data Structures

Algorithms and Data Structures Algorithms and Data Structures Dr. Malek Mouhoub Department of Computer Science University of Regina Fall 2002 Malek Mouhoub, CS3620 Fall 2002 1 6. Priority Queues 6. Priority Queues ffl ADT Stack : LIFO.

More information

THE UNIVERSITY OF WESTERN AUSTRALIA

THE UNIVERSITY OF WESTERN AUSTRALIA THE UNIVERSITY OF WESTERN AUSTRALIA MID SEMESTER EXAMINATION April 2018 DEPARTMENT OF COMPUTER SCIENCE & SOFTWARE ENGINEERING DATA STRUCTURES AND ALGORITHMS CITS2200 This Paper Contains: 6 Pages 10 Questions

More information

Recursion. Fundamentals of Computer Science

Recursion. Fundamentals of Computer Science Recursion Fundamentals of Computer Science Outline Recursion A method calling itself All good recursion must come to an end A powerful tool in computer science Allows writing elegant and easy to understand

More information

CSC 222: Object-Oriented Programming. Fall 2015

CSC 222: Object-Oriented Programming. Fall 2015 CSC 222: Object-Oriented Programming Fall 2015 Searching and sorting sequential search vs. binary search algorithm analysis: big-oh, rate-of-growth O(N 2 ) sorts: insertion sort, selection sort 1 Searching

More information

Objectives. Recursion. One Possible Way. How do you look up a name in the phone book? Recursive Methods Must Eventually Terminate.

Objectives. Recursion. One Possible Way. How do you look up a name in the phone book? Recursive Methods Must Eventually Terminate. Objectives Recursion Chapter 11 become familiar with the idea of recursion learn to use recursion as a programming tool become familiar with the binary search algorithm as an example of recursion become

More information

CS 163 Practice Final Exam Winter 2012

CS 163 Practice Final Exam Winter 2012 CS 163 Practice Final Exam Winter 2012 The final exam is Saturday, 21 April. Any problem from either midterm or either practice midterm may (and often does) appear again on the final. In addition, make

More information

Sorting and Selection

Sorting and Selection Sorting and Selection Introduction Divide and Conquer Merge-Sort Quick-Sort Radix-Sort Bucket-Sort 10-1 Introduction Assuming we have a sequence S storing a list of keyelement entries. The key of the element

More information

Recursion: The Beginning

Recursion: The Beginning Yufei Tao ITEE University of Queensland This lecture is the inception of a powerful technique called recursion. If used judiciously, this technique can simplify the design of an algorithm significantly,

More information

08 A: Sorting III. CS1102S: Data Structures and Algorithms. Martin Henz. March 10, Generated on Tuesday 9 th March, 2010, 09:58

08 A: Sorting III. CS1102S: Data Structures and Algorithms. Martin Henz. March 10, Generated on Tuesday 9 th March, 2010, 09:58 08 A: Sorting III CS1102S: Data Structures and Algorithms Martin Henz March 10, 2010 Generated on Tuesday 9 th March, 2010, 09:58 CS1102S: Data Structures and Algorithms 08 A: Sorting III 1 1 Recap: Sorting

More information

CSE 2123 Sorting. Jeremy Morris

CSE 2123 Sorting. Jeremy Morris CSE 2123 Sorting Jeremy Morris 1 Problem Specification: Sorting Given a list of values, put them in some kind of sorted order Need to know: Which order? Increasing? Decreasing? What does sorted order mean?

More information

Searching & Sorting in Java Bubble Sort

Searching & Sorting in Java Bubble Sort With the bubble sort, the basic idea is to compare adjacent values and exchange them if they are not in order. Consider the following example which shows the first pass through the algorithm. 1. Compare

More information

CSCI2100B Data Structures Heaps

CSCI2100B Data Structures Heaps CSCI2100B Data Structures Heaps Irwin King king@cse.cuhk.edu.hk http://www.cse.cuhk.edu.hk/~king Department of Computer Science & Engineering The Chinese University of Hong Kong Introduction In some applications,

More information

Sorting. Quicksort analysis Bubble sort. November 20, 2017 Hassan Khosravi / Geoffrey Tien 1

Sorting. Quicksort analysis Bubble sort. November 20, 2017 Hassan Khosravi / Geoffrey Tien 1 Sorting Quicksort analysis Bubble sort November 20, 2017 Hassan Khosravi / Geoffrey Tien 1 Quicksort analysis How long does Quicksort take to run? Let's consider the best and the worst case These differ

More information

CSc 110, Spring 2017 Lecture 39: searching

CSc 110, Spring 2017 Lecture 39: searching CSc 110, Spring 2017 Lecture 39: searching 1 Sequential search sequential search: Locates a target value in a list (may not be sorted) by examining each element from start to finish. Also known as linear

More information

CSE 143 Sample Midterm Exam #4

CSE 143 Sample Midterm Exam #4 CSE 143 Sample Midterm Exam #4 (based on Summer 2009's midterm; thanks to Alyssa Harding) 1. ArrayList Mystery. Consider the following method: public static void mystery4(arraylist list) { for

More information

Computer Science 136 Spring 2004 Professor Bruce. Final Examination May 19, 2004

Computer Science 136 Spring 2004 Professor Bruce. Final Examination May 19, 2004 Computer Science 136 Spring 2004 Professor Bruce Final Examination May 19, 2004 Question Points Score 1 10 2 8 3 15 4 12 5 12 6 8 7 10 TOTAL 65 Your name (Please print) I have neither given nor received

More information

4.1 COMPUTATIONAL THINKING AND PROBLEM-SOLVING

4.1 COMPUTATIONAL THINKING AND PROBLEM-SOLVING 4.1 COMPUTATIONAL THINKING AND PROBLEM-SOLVING 4.1.2 ALGORITHMS ALGORITHM An Algorithm is a procedure or formula for solving a problem. It is a step-by-step set of operations to be performed. It is almost

More information

Chapter 6. Repetition Statements. Animated Version The McGraw-Hill Companies, Inc. Permission required for reproduction or display.

Chapter 6. Repetition Statements. Animated Version The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Chapter 6 Repetition Statements Animated Version required for reproduction or display. Chapter 6-1 Objectives After you have read and studied this chapter, you should be able to Implement repetition control

More information

Chapter 17 - Notes Recursion

Chapter 17 - Notes Recursion Chapter 17 - Notes Recursion I. Recursive Definitions A. Recursion: The process of solving a problem by reducing it to smaller versions of itself. B. Recursive Function: A function that calls itself. C.

More information

Suppose we want to create a data structure called DataStore that has the following operations:

Suppose we want to create a data structure called DataStore that has the following operations: CompSci 100 Test 2 Fall 2010 Prof. Rodger Nov 18, 2010 Some common recurrence relations T(n) = T(n/2) +O(1) O(log n) T(n) = T(n/2) +O(n) O(n) T(n) = 2T(n/2) +O(1) O(n) T(n) = 2T(n/2) +O(n) O(n log n) T(n)

More information

Announcements. Recursion and why study it. Recursive programming. Recursion basic idea

Announcements. Recursion and why study it. Recursive programming. Recursion basic idea Announcements Recursion and why study it Tutoring schedule updated Do you find the sessions helpful? Midterm exam 1: Tuesday, April 11, in class Scope: will cover up to recursion Closed book but one sheet,

More information

INFO1x05 Tutorial 6. Exercise 1: Heaps and Priority Queues

INFO1x05 Tutorial 6. Exercise 1: Heaps and Priority Queues INFO1x05 Tutorial 6 Heaps and Priority Queues Exercise 1: 1. How long would it take to remove the log n smallest elements from a heap that contains n entries, using the operation? 2. Suppose you label

More information

Points off Total off Net Score. CS 314 Final Exam Spring 2016

Points off Total off Net Score. CS 314 Final Exam Spring 2016 Points off 1 2 3 4 5 6 Total off Net Score CS 314 Final Exam Spring 2016 Your Name Your UTEID Instructions: 1. There are 6 questions on this test. 100 points available. Scores will be scaled to 300 points.

More information

EXAMINATIONS 2010 END YEAR. COMP103 Introduction to Data Structures and Algorithms SOLUTIONS

EXAMINATIONS 2010 END YEAR. COMP103 Introduction to Data Structures and Algorithms SOLUTIONS T E W H A R E W Ā N A N G A O T E Ū P O K O O T E I K A A M Ā U I VUW V I C T O R I A UNIVERSITY OF WELLINGTON Student ID:....................... EXAMINATIONS 2010 END YEAR COMP103 Introduction to Data

More information

106B Final Review Session. Slides by Sierra Kaplan-Nelson and Kensen Shi Livestream managed by Jeffrey Barratt

106B Final Review Session. Slides by Sierra Kaplan-Nelson and Kensen Shi Livestream managed by Jeffrey Barratt 106B Final Review Session Slides by Sierra Kaplan-Nelson and Kensen Shi Livestream managed by Jeffrey Barratt Topics to Cover Sorting Searching Heaps and Trees Graphs (with Recursive Backtracking) Inheritance

More information

Sorting Algorithms part 1

Sorting Algorithms part 1 Sorting Algorithms part 1 1. Bubble sort Description Bubble sort is a simple sorting algorithm. It works by repeatedly stepping through the array to be sorted, comparing two items at a time, swapping these

More information

CSE wi: Practice Midterm

CSE wi: Practice Midterm CSE 373 18wi: Practice Midterm Name: UW email address: Instructions Do not start the exam until told to do so. You have 80 minutes to complete the exam. This exam is closed book and closed notes. You may

More information

8. Binary Search Tree

8. Binary Search Tree 8 Binary Search Tree Searching Basic Search Sequential Search : Unordered Lists Binary Search : Ordered Lists Tree Search Binary Search Tree Balanced Search Trees (Skipped) Sequential Search int Seq-Search

More information