from Recursion to Iteration
|
|
|
- Austin Hoover
- 9 years ago
- Views:
Transcription
1 from Recursion to Iteration 1 Quicksort Revisited using arrays partitioning arrays via scan and swap recursive quicksort on arrays 2 converting recursion into iteration an iterative version with a stack of parameters 3 Inverting Control in a Loop a GUI for the towers of Hanoi an interface to a recursive function inverting an iterative solution MCS 275 Lecture 18 Programming Tools and File Management Jan Verschelde, 22 February 2016 Programming Tools (MCS 275) from recursion to iteration L February / 33
2 from Recursion to Iteration 1 Quicksort Revisited using arrays partitioning arrays via scan and swap recursive quicksort on arrays 2 converting recursion into iteration an iterative version with a stack of parameters 3 Inverting Control in a Loop a GUI for the towers of Hanoi an interface to a recursive function inverting an iterative solution Programming Tools (MCS 275) from recursion to iteration L February / 33
3 Quicksort Revisited using arrays Recall the idea of Quicksort: 1 choose x and partition list in two: left list: x and right list: x 2 sort the lists left and right Our first implementation of Lecture 16 is recursively functional. Python s builtin lists handle all data pro: convenient for programming con: multiple copies of same data Goals: 1. use arrays for data efficiency, 2. turn recursion into iteration. Programming Tools (MCS 275) from recursion to iteration L February / 33
4 arrays of random integers from array import array as Array def main(): Generates a random array of integers and applies quicksort. low = int(input( Give lower bound : )) upp = int(input( Give upper bound : )) nbr = int(input( How many numbers? )) ans = input( Extra output? (y/n) ) from random import randint nums = [randint(low, upp) for _ in range(nbr)] data = Array( i, nums) print( A =, data) recursive_quicksort(data, 0, nbr, ans == y ) print( A =, data) Programming Tools (MCS 275) from recursion to iteration L February / 33
5 from Recursion to Iteration 1 Quicksort Revisited using arrays partitioning arrays via scan and swap recursive quicksort on arrays 2 converting recursion into iteration an iterative version with a stack of parameters 3 Inverting Control in a Loop a GUI for the towers of Hanoi an interface to a recursive function inverting an iterative solution Programming Tools (MCS 275) from recursion to iteration L February / 33
6 partitioning arrays Take x in the middle of the array. Apply scan and swap, for i < j: if A[i] > x and A[j] < x: A[i], A[j] =A[j], A[i] For example: A = [ ] At the middle: x = 56 (== A[4]) Start with i = 0 and j = 8. Increase i while A[i] < x, end at i = 1. Decrease j while A[j] > x, end at j = 4. Swap A[1] and A[4], and continue scanning A. A = [ ] i = 4, j = 3, x = 56 A[0:4] = [ ] <= 56 A[4:8] = [ ] >= 56 Programming Tools (MCS 275) from recursion to iteration L February / 33
7 from Recursion to Iteration 1 Quicksort Revisited using arrays partitioning arrays via scan and swap recursive quicksort on arrays 2 converting recursion into iteration an iterative version with a stack of parameters 3 Inverting Control in a Loop a GUI for the towers of Hanoi an interface to a recursive function inverting an iterative solution Programming Tools (MCS 275) from recursion to iteration L February / 33
8 the function partition() The specification and documentation: def partition(arr, first, last): Partitions arr[first:last] using as pivot the middle item x. On return is (i, j, x): i > j, all items in arr[i:last] are >= x, all items in arr[first:j+1] are <= x. Programming Tools (MCS 275) from recursion to iteration L February / 33
9 the body of partition() def partition(arr, first, last): pivot = arr[(first+last)//2] i = first j = last-1 while i <= j: while arr[i] < pivot: i = i+1 while arr[j] > pivot: j = j-1 if i < j: (arr[i], arr[j]) = (arr[j], arr[i]) if i <= j: (i, j) = (i+1, j-1) return (i, j, pivot) Programming Tools (MCS 275) from recursion to iteration L February / 33
10 checking postconditions for correctness Important to verify the correctness: i = 4, j = 3, x = 56 A[0:4] = [ ] <= 56 A[4:8] = [ ] >= 56 def check_partition(arr, first, last, i, j, pivot): Prints the result of the partition for a visible check on the postconditions. print( i = %d, j = %d, x = %d % (i, j, pivot)) print( arr[%d:%d] = % (first, j+1), \ arr[first:j+1], <=, pivot) print( arr[%d:%d] = % (i, last), \ arr[i:last], >=, pivot) Programming Tools (MCS 275) from recursion to iteration L February / 33
11 a recursive quicksort def recursive_quicksort(data, first, last, verbose=true): Sorts the array data in increasing order. If verbose, then extra output is written. (i, j, pivot) = partition(data, first, last) if verbose: check_partition(data, first, last, i, j, pivot) if j > first: recursive_quicksort(data, first, j+1, verbose) if i < last-1: recursive_quicksort(data, i, last, verbose) Important: first sort data[first:j+1]. Programming Tools (MCS 275) from recursion to iteration L February / 33
12 from Recursion to Iteration 1 Quicksort Revisited using arrays partitioning arrays via scan and swap recursive quicksort on arrays 2 converting recursion into iteration an iterative version with a stack of parameters 3 Inverting Control in a Loop a GUI for the towers of Hanoi an interface to a recursive function inverting an iterative solution Programming Tools (MCS 275) from recursion to iteration L February / 33
13 Converting Recursion into Iteration a stack for the parameters of the calls Recursion is executed via a stack. For quicksort, we store first and last index of the array to sort. With every call we push (first, last) on the stack. As long as the stack of indices is not empty: 1 pop the indices (first, last) from the stack 2 we partition the array A[first:last] 3 push (i, last) and then (first, j+1) Programming Tools (MCS 275) from recursion to iteration L February / 33
14 running the iterative code A = [ ] S = [(0, 8)] i = 4, j = 3, x = 56 A[0:4] = [ ] <= 56 A[4:8] = [ ] >= 56 S = [(0, 4), (4, 8)] i = 3, j = 1, x = 49 A[0:2] = [31 37] <= 49 A[3:4] = [56] >= 49 S = [(0, 2), (4, 8)] i = 2, j = 0, x = 37 A[0:1] = [31] <= 37 A[2:2] = [] >= 37 S = [(4, 8)]... Programming Tools (MCS 275) from recursion to iteration L February / 33
15 an iterative quicksort def iterative_quicksort(nbrs, verbose=true): The iterative version of quicksort uses a stack of indices in nbrs. stk = [] stk.insert(0, (0, len(nbrs))) while stk!= []: if verbose: print( S =, stk) (first, last) = stk.pop(0) (i, j, pivot) = partition(nbrs, first, last) if verbose: check_partition(nbrs, first, last, i, j, pivot) if i < last-1: stk.insert(0, (i, last)) if j > first: stk.insert(0, (first, j+1)) Programming Tools (MCS 275) from recursion to iteration L February / 33
16 from Recursion to Iteration 1 Quicksort Revisited using arrays partitioning arrays via scan and swap recursive quicksort on arrays 2 converting recursion into iteration an iterative version with a stack of parameters 3 Inverting Control in a Loop a GUI for the towers of Hanoi an interface to a recursive function inverting an iterative solution Programming Tools (MCS 275) from recursion to iteration L February / 33
17 Towers of Hanoi moving a pile of disks Programming Tools (MCS 275) from recursion to iteration L February / 33
18 Towers of Hanoi the middle stage Programming Tools (MCS 275) from recursion to iteration L February / 33
19 Towers of Hanoi the last move Programming Tools (MCS 275) from recursion to iteration L February / 33
20 from Recursion to Iteration 1 Quicksort Revisited using arrays partitioning arrays via scan and swap recursive quicksort on arrays 2 converting recursion into iteration an iterative version with a stack of parameters 3 Inverting Control in a Loop a GUI for the towers of Hanoi an interface to a recursive function inverting an iterative solution Programming Tools (MCS 275) from recursion to iteration L February / 33
21 rules of the game Move a pile of disks from peg A to B: 1 no larger disk on top of smaller disk, 2 use peg C as intermediary location. A GUI is just an interface to a program... 1 keep solution in a separate script, 2 GUI is primarily concerned with display. We need a "get_next_move" function. Programming Tools (MCS 275) from recursion to iteration L February / 33
22 inverting control in a loop Consider the following pseudo code: def f(n): if n == 0: # base case write result else: recursive call(s) The recursive f controls the calls to write. while True: result = get_next(); if no result: break write result The pace of writing controls the computation. Programming Tools (MCS 275) from recursion to iteration L February / 33
23 using stacks The get_next() function 1 stores all current values of variables and parameters before returning to the caller, 2 when called again, restores all values. For the towers of Hanoi we will 1 first convert to an iterative solution, 2 then adjust to an inverted function. Our data structures: A = ( A,range(1,n+1)) B = ( B,[]) C = ( C,[]) Programming Tools (MCS 275) from recursion to iteration L February / 33
24 a recursive solution, the base case def hanoi(nbr, apl, bpl, cpl, k, move): Moves nbr disks from apl to bpl, cpl is auxiliary. The recursion depth is counted by k, move counts the number of moves. Writes the state of the piles after each move. Returns the number of moves. if nbr == 1: # move disk from A to B bpl[1].insert(0, apl[1].pop(0)) write(k, move+1, nbr, apl, bpl, cpl) return move+1 Programming Tools (MCS 275) from recursion to iteration L February / 33
25 a recursive solution, the general case def hanoi(nbr, apl, bpl, cpl, k, move): if nbr == 1: else: # move nbr-1 disks from A to C, B is auxiliary move = hanoi(nbr-1, apl, cpl, bpl, k+1, move) # move nbr-th disk from A to B bpl[1].insert(0, apl[1].pop(0)) write(k, move+1, nbr, apl, bpl, cpl) # move nbr-1 disks from C to B, A is auxiliary move = hanoi(nbr-1, cpl, bpl, apl, k+1, move+1) return move Programming Tools (MCS 275) from recursion to iteration L February / 33
26 from Recursion to Iteration 1 Quicksort Revisited using arrays partitioning arrays via scan and swap recursive quicksort on arrays 2 converting recursion into iteration an iterative version with a stack of parameters 3 Inverting Control in a Loop a GUI for the towers of Hanoi an interface to a recursive function inverting an iterative solution Programming Tools (MCS 275) from recursion to iteration L February / 33
27 an iterative solution for the towers of Hanoi A stack of arguments of function calls: stk = [(n, A, B, C, k)] # symbols on the stack while len(stk) > 0: top = stk.pop(0) The recursive code: if n == 1: move disk from A to B else: move n-1 disks from A to C, B is auxiliary move n-th disk from A to B move n-1 disks from C to B, A is auxiliary Not only arguments of function calls go on the stack! Programming Tools (MCS 275) from recursion to iteration L February / 33
28 moves on the stack Observe that B[1].insert(0,A[1].pop(0)) is performed in both the base case and the general case. In all cases, we move a disk from A to B, but only in the base case can we execute directly, in the general case we must store the move. A move is stores as a string on the stack: top = stk.pop(0) if isinstance(top, str): eval(top) The move is stores as B[1].insert(0,A[1].pop(0)) ready for execution, triggered by eval. Programming Tools (MCS 275) from recursion to iteration L February / 33
29 iterative_hanoi, part I def iterative_hanoi(nbr, A, B, C, k): The iterative version uses a stack of function calls. On the stack are symbols for the piles, not the actual piles! stk = [(nbr, A, B, C, k)] cnt = 0 while len(stk) > 0: top = stk.pop(0) if isinstance(top, str): eval(top) if top[0]!= w : cnt = cnt + 1 # a move, not a write else: Programming Tools (MCS 275) from recursion to iteration L February / 33
30 iterative_hanoi, part II else: (nbr, sa, sb, sc, k) = top move = sb + [1].insert(0, + sa + [1].pop(0)) if nbr == 1: # move disk from A to B eval(move) cnt = cnt + 1 write(k, cnt, nbr, A, B, C) else: # observe that we swap the order of moves! # move nbr-1 disks from C to B, A is auxiliary stk.insert(0, (nbr-1, sc, sb, sa, k+1)) # move nbr-th disk from A to B stk.insert(0, ("write(%d,cnt,%d,a,b,c)" % (k, nbr))) stk.insert(0, move) # move nbr-1 disks from A to C, B is auxiliary stk.insert(0, (nbr-1, sa, sc, sb, k+1)) Programming Tools (MCS 275) from recursion to iteration L February / 33
31 inverting hanoi def get_next_move(stk, A, B, C): Computes the next move, changes the stack stk, and returns the next move to the calling routine. def inverted_hanoi(nbr, apl, bpl, cpl, k): This inverted version of the towers of Hanoi gives the control to the writing of the piles. stk = [(nbr, A, B, C, k)] cnt = 0 while True: move = get_next_move(stk, apl, bpl, cpl) if move == : break cnt = cnt + 1 pre = after move %d : % cnt write_piles(pre, apl, bpl, cpl) Programming Tools (MCS 275) from recursion to iteration L February / 33
32 body of get_next_move while len(stk) > 0: top = stk.pop(0) if isinstance(top, str): eval(top) return top else: (nbr, sap, sbp, scp, k) = top move = sbp + [1].insert(0, + sap + [1].pop(0)) if nbr == 1: eval(move) # move disk from A to B return move else: # observe that we swap the order of moves! # move nbr-1 disks from C to B, A is auxiliary stk.insert(0, (nbr-1, scp, sbp, sap, k+1)) # move nbr-th disk from A to B stk.insert(0, move) # move nbr-1 disks from A to C, B is auxiliary stk.insert(0, (nbr-1, sap, scp, sbp, k+1)) return Programming Tools (MCS 275) from recursion to iteration L February / 33
33 Exercises 1 Give Python code to enumerate all permutations of an array without making a copy of the array. 2 Two natural numbers m and n are input to the Ackermann function A. Form = 0: A(0, n) =n + 1, for m > 0: A(m, 0) =A(m 1, 1), and for m > 0, n > 0: A(m, n) =A(m 1, A(m, n 1)). 1 Give a recursive Python function for A. 2 Turn the recursive function into an iterative one. 3 Write an iterative version of the GUI to draw Hilbert s space filling curves. Programming Tools (MCS 275) from recursion to iteration L February / 33
CSC148 Lecture 8. Algorithm Analysis Binary Search Sorting
CSC148 Lecture 8 Algorithm Analysis Binary Search Sorting Algorithm Analysis Recall definition of Big Oh: We say a function f(n) is O(g(n)) if there exists positive constants c,b such that f(n)
Sorting revisited. Build the binary search tree: O(n^2) Traverse the binary tree: O(n) Total: O(n^2) + O(n) = O(n^2)
Sorting revisited How did we use a binary search tree to sort an array of elements? Tree Sort Algorithm Given: An array of elements to sort 1. Build a binary search tree out of the elements 2. Traverse
6. Standard Algorithms
6. Standard Algorithms The algorithms we will examine perform Searching and Sorting. 6.1 Searching Algorithms Two algorithms will be studied. These are: 6.1.1. inear Search The inear Search The Binary
Pseudo code Tutorial and Exercises Teacher s Version
Pseudo code Tutorial and Exercises Teacher s Version Pseudo-code is an informal way to express the design of a computer program or an algorithm in 1.45. The aim is to get the idea quickly and also easy
The Tower of Hanoi. Recursion Solution. Recursive Function. Time Complexity. Recursive Thinking. Why Recursion? n! = n* (n-1)!
The Tower of Hanoi Recursion Solution recursion recursion recursion Recursive Thinking: ignore everything but the bottom disk. 1 2 Recursive Function Time Complexity Hanoi (n, src, dest, temp): If (n >
1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++
Answer the following 1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++ 2) Which data structure is needed to convert infix notations to postfix notations? Stack 3) The
10CS35: Data Structures Using C
CS35: Data Structures Using C QUESTION BANK REVIEW OF STRUCTURES AND POINTERS, INTRODUCTION TO SPECIAL FEATURES OF C OBJECTIVE: Learn : Usage of structures, unions - a conventional tool for handling a
Module 2 Stacks and Queues: Abstract Data Types
Module 2 Stacks and Queues: Abstract Data Types A stack is one of the most important and useful non-primitive linear data structure in computer science. It is an ordered collection of items into which
Lecture Notes on Linear Search
Lecture Notes on Linear Search 15-122: Principles of Imperative Computation Frank Pfenning Lecture 5 January 29, 2013 1 Introduction One of the fundamental and recurring problems in computer science is
Analysis of Binary Search algorithm and Selection Sort algorithm
Analysis of Binary Search algorithm and Selection Sort algorithm In this section we shall take up two representative problems in computer science, work out the algorithms based on the best strategy to
Functions Recursion. C++ functions. Declare/prototype. Define. Call. int myfunction (int ); int myfunction (int x){ int y = x*x; return y; }
Functions Recursion C++ functions Declare/prototype int myfunction (int ); Define int myfunction (int x){ int y = x*x; return y; Call int a; a = myfunction (7); function call flow types type of function
Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
Algorithms. Margaret M. Fleck. 18 October 2010
Algorithms Margaret M. Fleck 18 October 2010 These notes cover how to analyze the running time of algorithms (sections 3.1, 3.3, 4.4, and 7.1 of Rosen). 1 Introduction The main reason for studying big-o
Quick Sort. Implementation
Implementation Next, recall that our goal is to partition all remaining elements based on whether they are smaller than or greater than the pivot We will find two entries: One larger than the pivot (staring
Course: Programming II - Abstract Data Types. The ADT Stack. A stack. The ADT Stack and Recursion Slide Number 1
Definition Course: Programming II - Abstract Data Types The ADT Stack The ADT Stack is a linear sequence of an arbitrary number of items, together with access procedures. The access procedures permit insertions
Section IV.1: Recursive Algorithms and Recursion Trees
Section IV.1: Recursive Algorithms and Recursion Trees Definition IV.1.1: A recursive algorithm is an algorithm that solves a problem by (1) reducing it to an instance of the same problem with smaller
What Is Recursion? 5/12/10 1. CMPSC 24: Lecture 13 Recursion. Lecture Plan. Divyakant Agrawal Department of Computer Science UC Santa Barbara
CMPSC 24: Lecture 13 Recursion Divyakant Agrawal Department of Computer Science UC Santa Barbara 5/12/10 1 Lecture Plan Recursion General structure of recursive soluions Why do recursive soluions terminate?
What Is Recursion? Recursion. Binary search example postponed to end of lecture
Recursion Binary search example postponed to end of lecture What Is Recursion? Recursive call A method call in which the method being called is the same as the one making the call Direct recursion Recursion
Algorithm Design and Recursion
Chapter 13 Algorithm Design and Recursion Objectives To understand basic techniques for analyzing the efficiency of algorithms. To know what searching is and understand the algorithms for linear and binary
Solving Problems Recursively
Solving Problems Recursively Recursion is an indispensable tool in a programmer s toolkit Allows many complex problems to be solved simply Elegance and understanding in code often leads to better programs:
You are to simulate the process by making a record of the balls chosen, in the sequence in which they are chosen. Typical output for a run would be:
Lecture 7 Picking Balls From an Urn The problem: An urn has n (n = 10) balls numbered from 0 to 9 A ball is selected at random, its' is number noted, it is set aside, and another ball is selected from
Sorting Algorithms. Nelson Padua-Perez Bill Pugh. Department of Computer Science University of Maryland, College Park
Sorting Algorithms Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park Overview Comparison sort Bubble sort Selection sort Tree sort Heap sort Quick sort Merge
Recursion. Slides. Programming in C++ Computer Science Dept Va Tech Aug., 2001. 1995-2001 Barnette ND, McQuain WD
1 Slides 1. Table of Contents 2. Definitions 3. Simple 4. Recursive Execution Trace 5. Attributes 6. Recursive Array Summation 7. Recursive Array Summation Trace 8. Coding Recursively 9. Recursive Design
Algorithms and Data S tructures Structures Stack, Queues, and Applications Applications Ulf Leser
Algorithms and Data Structures Stack, Queues, and Applications Ulf Leser Content of this Lecture Stacks and Queues Tree Traversal Towers of Hanoi Ulf Leser: Alg&DS, Summer semester 2011 2 Stacks and Queues
MAX = 5 Current = 0 'This will declare an array with 5 elements. Inserting a Value onto the Stack (Push) -----------------------------------------
=============================================================================================================================== DATA STRUCTURE PSEUDO-CODE EXAMPLES (c) Mubashir N. Mir - www.mubashirnabi.com
Mobile App Design Project #1 Java Boot Camp: Design Model for Chutes and Ladders Board Game
Mobile App Design Project #1 Java Boot Camp: Design Model for Chutes and Ladders Board Game Directions: In mobile Applications the Control Model View model works to divide the work within an application.
COMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms.
COMP 356 Programming Language Structures Notes for Chapter 10 of Concepts of Programming Languages Implementing Subprograms 1 Activation Records activation declaration location Recall that an activation
the recursion-tree method
the recursion- method recurrence into a 1 recurrence into a 2 MCS 360 Lecture 39 Introduction to Data Structures Jan Verschelde, 22 November 2010 recurrence into a The for consists of two steps: 1 Guess
Why? A central concept in Computer Science. Algorithms are ubiquitous.
Analysis of Algorithms: A Brief Introduction Why? A central concept in Computer Science. Algorithms are ubiquitous. Using the Internet (sending email, transferring files, use of search engines, online
csci 210: Data Structures Recursion
csci 210: Data Structures Recursion Summary Topics recursion overview simple examples Sierpinski gasket Hanoi towers Blob check READING: GT textbook chapter 3.5 Recursion In general, a method of defining
Project 2: Bejeweled
Project 2: Bejeweled Project Objective: Post: Tuesday March 26, 2013. Due: 11:59PM, Monday April 15, 2013 1. master the process of completing a programming project in UNIX. 2. get familiar with command
Data Structure and Algorithm I Midterm Examination 120 points Time: 9:10am-12:10pm (180 minutes), Friday, November 12, 2010
Data Structure and Algorithm I Midterm Examination 120 points Time: 9:10am-12:10pm (180 minutes), Friday, November 12, 2010 Problem 1. In each of the following question, please specify if the statement
Data Structures. Level 6 C30151. www.fetac.ie. Module Descriptor
The Further Education and Training Awards Council (FETAC) was set up as a statutory body on 11 June 2001 by the Minister for Education and Science. Under the Qualifications (Education & Training) Act,
PES Institute of Technology-BSC QUESTION BANK
PES Institute of Technology-BSC Faculty: Mrs. R.Bharathi CS35: Data Structures Using C QUESTION BANK UNIT I -BASIC CONCEPTS 1. What is an ADT? Briefly explain the categories that classify the functions
Biostatistics 615/815
Merge Sort Biostatistics 615/815 Lecture 8 Notes on Problem Set 2 Union Find algorithms Dynamic Programming Results were very ypositive! You should be gradually becoming g y g comfortable compiling, debugging
Exercises Software Development I. 11 Recursion, Binary (Search) Trees. Towers of Hanoi // Tree Traversal. January 16, 2013
Exercises Software Development I 11 Recursion, Binary (Search) Trees Towers of Hanoi // Tree Traversal January 16, 2013 Software Development I Winter term 2012/2013 Institute for Pervasive Computing Johannes
Introduction to Algorithms March 10, 2004 Massachusetts Institute of Technology Professors Erik Demaine and Shafi Goldwasser Quiz 1.
Introduction to Algorithms March 10, 2004 Massachusetts Institute of Technology 6.046J/18.410J Professors Erik Demaine and Shafi Goldwasser Quiz 1 Quiz 1 Do not open this quiz booklet until you are directed
ESCI 386 Scientific Programming, Analysis and Visualization with Python. Lesson 5 Program Control
ESCI 386 Scientific Programming, Analysis and Visualization with Python Lesson 5 Program Control 1 Interactive Input Input from the terminal is handled using the raw_input() function >>> a = raw_input('enter
Sample Questions Csci 1112 A. Bellaachia
Sample Questions Csci 1112 A. Bellaachia Important Series : o S( N) 1 2 N N i N(1 N) / 2 i 1 o Sum of squares: N 2 N( N 1)(2N 1) N i for large N i 1 6 o Sum of exponents: N k 1 k N i for large N and k
CmpSci 187: Programming with Data Structures Spring 2015
CmpSci 187: Programming with Data Structures Spring 2015 Lecture #12 John Ridgway March 10, 2015 1 Implementations of Queues 1.1 Linked Queues A Linked Queue Implementing a queue with a linked list is
Class Overview. CSE 326: Data Structures. Goals. Goals. Data Structures. Goals. Introduction
Class Overview CSE 326: Data Structures Introduction Introduction to many of the basic data structures used in computer software Understand the data structures Analyze the algorithms that use them Know
Symbol Tables. Introduction
Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The
Computers. An Introduction to Programming with Python. Programming Languages. Programs and Programming. CCHSG Visit June 2014. Dr.-Ing.
Computers An Introduction to Programming with Python CCHSG Visit June 2014 Dr.-Ing. Norbert Völker Many computing devices are embedded Can you think of computers/ computing devices you may have in your
Programming Language Rankings. Lecture 15: Type Inference, polymorphism & Type Classes. Top Combined. Tiobe Index. CSC 131! Fall, 2014!
Programming Language Rankings Lecture 15: Type Inference, polymorphism & Type Classes CSC 131 Fall, 2014 Kim Bruce Top Combined Tiobe Index 1. JavaScript (+1) 2. Java (-1) 3. PHP 4. C# (+2) 5. Python (-1)
Pushdown Automata. place the input head on the leftmost input symbol. while symbol read = b and pile contains discs advance head remove disc from pile
Pushdown Automata In the last section we found that restricting the computational power of computing devices produced solvable decision problems for the class of sets accepted by finite automata. But along
Stack Allocation. Run-Time Data Structures. Static Structures
Run-Time Data Structures Stack Allocation Static Structures For static structures, a fixed address is used throughout execution. This is the oldest and simplest memory organization. In current compilers,
Stacks. Linear data structures
Stacks Linear data structures Collection of components that can be arranged as a straight line Data structure grows or shrinks as we add or remove objects ADTs provide an abstract layer for various operations
1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D.
1. The memory address of the first element of an array is called A. floor address B. foundation addressc. first address D. base address 2. The memory address of fifth element of an array can be calculated
Converting a Number from Decimal to Binary
Converting a Number from Decimal to Binary Convert nonnegative integer in decimal format (base 10) into equivalent binary number (base 2) Rightmost bit of x Remainder of x after division by two Recursive
CSCI 123 INTRODUCTION TO PROGRAMMING CONCEPTS IN C++
Brad Rippe CSCI 123 INTRODUCTION TO PROGRAMMING CONCEPTS IN C++ Recursion Recursion CHAPTER 14 Overview 14.1 Recursive Functions for Tasks 14.2 Recursive Functions for Values 14.3 Thinking Recursively
Sequential Data Structures
Sequential Data Structures In this lecture we introduce the basic data structures for storing sequences of objects. These data structures are based on arrays and linked lists, which you met in first year
Outline. multiple choice quiz bottom-up design. the modules main program: quiz.py namespaces in Python
Outline 1 Modular Design multiple choice quiz bottom-up design 2 Python Implementation the modules main program: quiz.py namespaces in Python 3 The Software Cycle quality of product and process waterfall
ML for the Working Programmer
ML for the Working Programmer 2nd edition Lawrence C. Paulson University of Cambridge CAMBRIDGE UNIVERSITY PRESS CONTENTS Preface to the Second Edition Preface xiii xv 1 Standard ML 1 Functional Programming
Introduction to Python
Caltech/LEAD Summer 2012 Computer Science Lecture 2: July 10, 2012 Introduction to Python The Python shell Outline Python as a calculator Arithmetic expressions Operator precedence Variables and assignment
Chapter 7: Sequential Data Structures
Java by Definition Chapter 7: Sequential Data Structures Page 1 of 112 Chapter 7: Sequential Data Structures We have so far explored the basic features of the Java language, including an overview of objectoriented
1 Classical Universal Computer 3
Chapter 6: Machine Language and Assembler Christian Jacob 1 Classical Universal Computer 3 1.1 Von Neumann Architecture 3 1.2 CPU and RAM 5 1.3 Arithmetic Logical Unit (ALU) 6 1.4 Arithmetic Logical Unit
Computational Mathematics with Python
Computational Mathematics with Python Basics Claus Führer, Jan Erik Solem, Olivier Verdier Spring 2010 Claus Führer, Jan Erik Solem, Olivier Verdier Computational Mathematics with Python Spring 2010 1
Systems Programming & Scripting
Systems Programming & Scripting Lecture 14 - Shell Scripting: Control Structures, Functions Syst Prog & Scripting - Heriot Watt University 1 Control Structures Shell scripting supports creating more complex
Introduction to Programming System Design. CSCI 455x (4 Units)
Introduction to Programming System Design CSCI 455x (4 Units) Description This course covers programming in Java and C++. Topics include review of basic programming concepts such as control structures,
CS 2412 Data Structures. Chapter 2 Stacks and recursion
CS 2412 Data Structures Chapter 2 Stacks and recursion 1 2.1 Stacks A stack is a data structure in which all insertions and deletions of entries are made at one end, called top of the stack. Examples:
Unit 1. 5. Write iterative and recursive C functions to find the greatest common divisor of two integers. [6]
Unit 1 1. Write the following statements in C : [4] Print the address of a float variable P. Declare and initialize an array to four characters a,b,c,d. 2. Declare a pointer to a function f which accepts
Exercise 4 Learning Python language fundamentals
Exercise 4 Learning Python language fundamentals Work with numbers Python can be used as a powerful calculator. Practicing math calculations in Python will help you not only perform these tasks, but also
Python for Rookies. Example Examination Paper
Python for Rookies Example Examination Paper Instructions to Students: Time Allowed: 2 hours. This is Open Book Examination. All questions carry 25 marks. There are 5 questions in this exam. You should
Chapter 15 Functional Programming Languages
Chapter 15 Functional Programming Languages Introduction - The design of the imperative languages is based directly on the von Neumann architecture Efficiency (at least at first) is the primary concern,
Review of Hashing: Integer Keys
CSE 326 Lecture 13: Much ado about Hashing Today s munchies to munch on: Review of Hashing Collision Resolution by: Separate Chaining Open Addressing $ Linear/Quadratic Probing $ Double Hashing Rehashing
Binary Heap Algorithms
CS Data Structures and Algorithms Lecture Slides Wednesday, April 5, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks [email protected] 2005 2009 Glenn G. Chappell
Binary Search Trees. basic implementations randomized BSTs deletion in BSTs
Binary Search Trees basic implementations randomized BSTs deletion in BSTs eferences: Algorithms in Java, Chapter 12 Intro to Programming, Section 4.4 http://www.cs.princeton.edu/introalgsds/43bst 1 Elementary
Binary search algorithm
Binary search algorithm Definition Search a sorted array by repeatedly dividing the search interval in half. Begin with an interval covering the whole array. If the value of the search key is less than
Regression Verification: Status Report
Regression Verification: Status Report Presentation by Dennis Felsing within the Projektgruppe Formale Methoden der Softwareentwicklung 2013-12-11 1/22 Introduction How to prevent regressions in software
Introduction to the Oracle DBMS
Introduction to the Oracle DBMS Kristian Torp Department of Computer Science Aalborg University www.cs.aau.dk/ torp [email protected] December 2, 2011 daisy.aau.dk Kristian Torp (Aalborg University) Introduction
transmission media and network topologies client/server architecture layers, protocols, and sockets
Network Programming 1 Computer Networks transmission media and network topologies client/server architecture layers, protocols, and sockets 2 Network Programming a simple client/server interaction the
Data Structures and Algorithms
Data Structures and Algorithms CS245-2016S-06 Binary Search Trees David Galles Department of Computer Science University of San Francisco 06-0: Ordered List ADT Operations: Insert an element in the list
C Compiler Targeting the Java Virtual Machine
C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the
Algorithms and Data Structures
Algorithms and Data Structures Part 2: Data Structures PD Dr. rer. nat. habil. Ralf-Peter Mundani Computation in Engineering (CiE) Summer Term 2016 Overview general linked lists stacks queues trees 2 2
Lecture 12 Doubly Linked Lists (with Recursion)
Lecture 12 Doubly Linked Lists (with Recursion) In this lecture Introduction to Doubly linked lists What is recursion? Designing a node of a DLL Recursion and Linked Lists o Finding a node in a LL (recursively)
Introduction to Computer Science I Spring 2014 Mid-term exam Solutions
Introduction to Computer Science I Spring 2014 Mid-term exam Solutions 1. Question: Consider the following module of Python code... def thing_one (x): y = 0 if x == 1: y = x x = 2 if x == 2: y = -x x =
Chapter 5. Recursion. Data Structures and Algorithms in Java
Chapter 5 Recursion Data Structures and Algorithms in Java Objectives Discuss the following topics: Recursive Definitions Method Calls and Recursion Implementation Anatomy of a Recursive Call Tail Recursion
CS473 - Algorithms I
CS473 - Algorithms I Lecture 9 Sorting in Linear Time View in slide-show mode 1 How Fast Can We Sort? The algorithms we have seen so far: Based on comparison of elements We only care about the relative
St S a t ck a ck nd Qu Q eue 1
Stack and Queue 1 Stack Data structure with Last-In First-Out (LIFO) behavior In Out C B A B C 2 Typical Operations Pop on Stack Push isempty: determines if the stack has no elements isfull: determines
Data Structures and Data Manipulation
Data Structures and Data Manipulation What the Specification Says: Explain how static data structures may be used to implement dynamic data structures; Describe algorithms for the insertion, retrieval
recursion, O(n), linked lists 6/14
recursion, O(n), linked lists 6/14 recursion reducing the amount of data to process and processing a smaller amount of data example: process one item in a list, recursively process the rest of the list
Data Structure [Question Bank]
Unit I (Analysis of Algorithms) 1. What are algorithms and how they are useful? 2. Describe the factor on best algorithms depends on? 3. Differentiate: Correct & Incorrect Algorithms? 4. Write short note:
Data Structures and Algorithms V22.0102. Otávio Braga
Data Structures and Algorithms V22.0102 Otávio Braga We use a stack When an operand is read, output it When an operator is read Pop until the top of the stack has an element of lower precedence Then push
Simple sorting algorithms and their complexity. Bubble sort. Complexity of bubble sort. Complexity of bubble sort. Bubble sort of lists
Simple sorting algorithms and their complexity Bubble sort Selection sort Insertion sort Bubble sort void bubblesort(int arr[]){ int i; int j; int temp; for(i = arr.length-1; i > 0; i--){ for(j = 0; j
7.1 Our Current Model
Chapter 7 The Stack In this chapter we examine what is arguably the most important abstract data type in computer science, the stack. We will see that the stack ADT and its implementation are very simple.
Analysis of a Search Algorithm
CSE 326 Lecture 4: Lists and Stacks 1. Agfgd 2. Dgsdsfd 3. Hdffdsf 4. Sdfgsfdg 5. Tefsdgass We will review: Analysis: Searching a sorted array (from last time) List ADT: Insert, Delete, Find, First, Kth,
Outline BST Operations Worst case Average case Balancing AVL Red-black B-trees. Binary Search Trees. Lecturer: Georgy Gimel farb
Binary Search Trees Lecturer: Georgy Gimel farb COMPSCI 220 Algorithms and Data Structures 1 / 27 1 Properties of Binary Search Trees 2 Basic BST operations The worst-case time complexity of BST operations
How do sort this list using one line? a_list.sort()
Review Questions for lists and File (read and write): Make sure to review Midterm 1 and midterm 2, all samples for midterms as well. Review all of the homework, class examples and readings exercises. Make
Catalan Numbers. Thomas A. Dowling, Department of Mathematics, Ohio State Uni- versity.
7 Catalan Numbers Thomas A. Dowling, Department of Mathematics, Ohio State Uni- Author: versity. Prerequisites: The prerequisites for this chapter are recursive definitions, basic counting principles,
Dynamic Programming. Lecture 11. 11.1 Overview. 11.2 Introduction
Lecture 11 Dynamic Programming 11.1 Overview Dynamic Programming is a powerful technique that allows one to solve many different types of problems in time O(n 2 ) or O(n 3 ) for which a naive approach
Positional Numbering System
APPENDIX B Positional Numbering System A positional numbering system uses a set of symbols. The value that each symbol represents, however, depends on its face value and its place value, the value associated
Questions 1 through 25 are worth 2 points each. Choose one best answer for each.
Questions 1 through 25 are worth 2 points each. Choose one best answer for each. 1. For the singly linked list implementation of the queue, where are the enqueues and dequeues performed? c a. Enqueue in
CompuScholar, Inc. Alignment to Utah's Computer Programming II Standards
CompuScholar, Inc. Alignment to Utah's Computer Programming II Standards Course Title: TeenCoder: Java Programming Course ISBN: 978 0 9887070 2 3 Course Year: 2015 Note: Citation(s) listed may represent
Arrays. Atul Prakash Readings: Chapter 10, Downey Sun s Java tutorial on Arrays: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.
Arrays Atul Prakash Readings: Chapter 10, Downey Sun s Java tutorial on Arrays: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/arrays.html 1 Grid in Assignment 2 How do you represent the state
Outline. hardware components programming environments. installing Python executing Python code. decimal and binary notations running Sage
Outline 1 Computer Architecture hardware components programming environments 2 Getting Started with Python installing Python executing Python code 3 Number Systems decimal and binary notations running
