Radix Sort Sorting in the C++ STL
|
|
|
- Mabel Williamson
- 9 years ago
- Views:
Transcription
1 Radix Sort Sorting in the C++ STL CS 311 Data Structures and Algorithms Lecture Slides Monday, October 19, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks Glenn G. Chappell
2 Unit Overview Algorithmic Efficiency & Sorting Major Topics Introduction to Analysis of Algorithms Introduction to Sorting Comparison Sorts I More on Big-O The Limits of Sorting Divide-and-Conquer Comparison Sorts II Comparison Sorts III Radix Sort Sorting in the C++ STL 19 Oct 2009 CS 311 Fall
3 Review Introduction to Analysis of Algorithms Efficiency General: using few resources (time, space, bandwidth, etc.). Specific: fast (time). Analyzing Efficiency Determine how the size of the input affects running time, measured in steps, in the worst case. Scalable: works well with large problems. Using Big-O In Words Cannot read all of input O(1) O(log n) O(n) Constant time Logarithmic time Linear time Faster O(n log n) Log-linear time Slower Probably not scalable O(n 2 ) O(b n ), for some b > 1 Quadratic time Exponential time 19 Oct 2009 CS 311 Fall
4 Review Introduction to Sorting Basics Sort: Place a collection of data in order. Key: The part of the data item used to sort Comparison sort: A sorting algorithm that gets its information by comparing items in pairs. x y compare x<y? A general-purpose comparison sort places no restrictions on the size of the list or the values in it Oct 2009 CS 311 Fall
5 Review Introduction to Sorting Overview of Algorithms There is no known sorting algorithm that has all the properties we would like one to have. We will examine a number of sorting algorithms. Most of these fall into two categories: O(n 2 ) and O(n log n). Quadratic-Time [O(n 2 )] Algorithms Bubble Sort Insertion Sort Quicksort Treesort (later in semester) Log-Linear-Time [O(n log n)] Algorithms Merge Sort (some) Heap Sort (mostly later in semester) Introsort (not in the text) Special Purpose Not Comparison Sorts Pigeonhole Sort Radix Sort 19 Oct 2009 CS 311 Fall
6 Review Comparison Sorts II Merge Sort Merge Sort splits the data in half, recursively sorts each half, and then merges the two. Stable Merge Linear time, stable. In-place for Linked List. Uses buffer [O(n) space] for array. Analysis Efficiency: O(n log n). Average same. Requirements on data: Works for Linked Lists, etc. Space Efficiency: O(log n) space for Linked List. Can eliminate recursion to make this in-place. O(n) space for array. / / Stable: Yes. Sort (recurse) Performance on Nearly Sorted Data: Not better or worse. Notes Practical & often used. Fastest known for (1) stable sort, (2) sorting a Linked List. Good standard for judging sorting algorithms Stable Merge Sort (recurse) 19 Oct 2009 CS 311 Fall
7 Review Comparison Sorts III Quicksort: Introduction, Partition Quicksort is another divide-and-conquer algorithm. Procedure: Choose a list item (the pivot). Do a Partition: put items less than the pivot before it, and items greater than the pivot after it. Recursively sort two sublists: items before pivot, items after pivot. We did a simple pivot choice: the first item. Later, we improve this. Fast Partition algorithms are in-place, but not stable Note: In-place Partition does not give us an in-place Quicksort. Quicksort uses memory for recursion. 3 Pivot Sort (recurse) Pivot Partition Sort (recurse) 19 Oct 2009 CS 311 Fall
8 Review Comparison Sorts III Better Quicksort: Optimizations Unoptimized Quicksort is slow (quadratic time) on nearly sorted data and uses a lot of space (linear) for recursion. We discussed three optimizations: Median-of-three pivot selection. Improves performance on most nearly sorted data. Requires random-access data. Tail-recursion elimination on the larger recursive call. Reduces space usage to logarithmic. Do not sort small sublists; finish with Insertion Sort. General speed up. May adversely affect cache hits. Median-of-three Initial State: With these optimizations, Quicksort is still O(n 2 ) time After Partition: Pivot Oct 2009 CS 311 Fall
9 Review Comparison Sorts III Better Quicksort: Analysis of Quicksort Efficiency Quicksort is O(n 2 ). Quicksort has a very good O(n log n) average-case time. Requirements on Data Non-trivial pivot-selection algorithms (median-of-3 and others) are only efficient for random-access data. Space Usage Quicksort uses space for recursion. Stability Additional space: O(log n), if clever tail-recursion elimination is done. Even if all recursion is eliminated, O(log n) additional space is still used. This additional space need not hold any data items. Efficient versions of Quicksort are not stable. Performance on Nearly Sorted Data Unlike Merge Sort An unoptimized Quicksort is slow on nearly sorted data: O(n 2 ). Quicksort + median-of-3 is O(n log n) on most nearly sorted data. 19 Oct 2009 CS 311 Fall
10 Review Comparison Sorts III Introsort: Description In 1997, David Musser found out how to make Quicksort log-linear time. Keep track of the recursion depth. If this exceeds some bound (recommended: 2 log 2 n), then switch to Heap Sort for the current sublist. Heap Sort is a general-purpose comparison sort that is log-linear time and in-place. We will discuss it in detail later in the semester. Musser calls this technique introspection. Thus, introspective sorting, or Introsort. 19 Oct 2009 CS 311 Fall
11 Review Comparison Sorts III Introsort: Diagram Here is an illustration of how Introsort works. In practice, the recursion will be deeper than this. The Insertion-Sort call might not be done, due to its effect on cache hits. Introsort Introsort-recurse Like Mo3 Quicksort: Find Mo3 Pivot, Partition Introsort-recurse Like Mo3 Quicksort: Find Mo3 Pivot, Partition Insertion Sort Introsort-recurse Like Mo3 Quicksort: Find Mo3 Pivot, Partition Now, the list is nearly sorted. Finish with a (linear time!) Insertion Sort [??]. When the sublist to sort is very small, do not recurse. Insertion Sort will finish the job later [??]. Recursion Depth Limit Introsort-recurse Like Mo3 Quicksort: Find Mo3 Pivot, Partition Introsort-recurse Like Mo3 Quicksort: Find Mo3 Pivot, Partition Introsort-recurse Like Mo3 Quicksort: Find Mo3 Pivot, Partition Introsort-recurse Like Mo3 Quicksort: Find Mo3 Pivot, Partition When the recursion depth is too great, switch to Heap Sort to sort the current sublist. Heap Sort Heap Sort 19 Oct 2009 CS 311 Fall
12 Review Comparison Sorts III Introsort: Analysis Efficiency Introsort is O(n log n). Introsort also has an average-case time of O(n log n) [of course]. Its average-case time is just as good as Quicksort. Requirements on Data Introsort requires random-access data. Space Usage Introsort uses space for recursion (or simulated recursion). Stability Additional space: O(log n) even if all recursion is eliminated. This additional space need not hold any data items. Introsort is not stable. Performance on Nearly Sorted Data Introsort is not significantly faster or slower on nearly sorted data. 19 Oct 2009 CS 311 Fall
13 Radix Sort Background We have looked in detail at five general-purpose comparison sorts. Now we look at two sorting algorithms that do not use a comparison function: Pigeonhole Sort. Radix Sort. Later in the semester, we will look closer at Heap Sort, which is a general-purpose comparison sort, but which can also be conveniently modified to handle other situations. 19 Oct 2009 CS 311 Fall
14 Radix Sort Preliminaries: Pigeonhole Sort Description Suppose we have a list to sort, and: Keys lie in a small fixed set of values. Keys can be used to index an array. Procedure E.g., they might be small-ish nonnegative integers. Make an array of empty lists (buckets), one for each possible key. Iterate through the given list; insert each item at the end of the bucket corresponding to its value. Copy items in each bucket, in order, back to the original list. Time efficiency: linear time, if written properly. How is this possible? Answer: We are not doing general-purpose comparison sorting. Our Ω(n log n) bound does not apply. This algorithm is often called Pigeonhole Sort. Not generalpurpose Not applicable to many situations; requires a limited set of keys. Pigeonhole Sort is stable, and uses linear additional space. Not even a comparison sort 19 Oct 2009 CS 311 Fall
15 Radix Sort Preliminaries: Pigeonhole Sort Write It TO DO Write a function to do Pigeonhole Sort. Done. See pigeonhole_sort.cpp, on the web page. 19 Oct 2009 CS 311 Fall
16 Radix Sort Description Based on Pigeonhole Sort, we can design a useful algorithm: Radix Sort. Suppose we want to sort a list of strings (in some sense): Character strings. Numbers, considered as strings of digits. Short-ish sequences of some other kind. Call the entries in a string characters. These need to be valid keys for Pigeonhole Sort. In particular, we must be able to use them as array indices. The algorithm will arrange the list in lexicographic order. This means sort first by first character, then by second, etc. For strings of letters, this is alphabetical order. For positive integers (padded with leading zeroes), this is numerical order. Radix Sort Procedure Pigeonhole Sort the list using the last character as the key. Take the list resulting from the previous step and Pigeonhole Sort it, using the next-to-last character as the key. Continue After re-sorting by first character, the list is sorted. 19 Oct 2009 CS 311 Fall
17 Radix Sort Example Here is the list to be sorted We first sort them by the units digit, using Pigeonhole Sort Then Pigeonhole Sort again, based on the tens digit, in a stable manner (note that the tens digit of 4 is 0) Again, using the hundreds digit And now the list is sorted. Nonempty buckets are underlined 19 Oct 2009 CS 311 Fall
18 Radix Sort Write It, Comments TO DO Write Radix Sort for small-ish positive integers. Comments Radix Sort makes very strong assumptions about the values in the list to be sorted. It requires linear additional space. It is stable. Done. See radix_sort.cpp, on the web page. It does not perform especially well or badly on nearly sorted data. Of course, what we really care about is speed. See the next slide. 19 Oct 2009 CS 311 Fall
19 Radix Sort Efficiency [1/2] How Fast is Radix Sort? Fix the number of characters and the character set. Then each sorting pass can be done in linear time. Pigeonhole Sort with one bucket for each possible character. And there are a fixed number of passes. Thus, Radix Sort is O(n): linear time. How is this possible? Radix Sort is a sorting algorithm. However, again, it is neither general-purpose nor a comparison sort. It places restrictions on the values to be sorted: not general-purpose. It gets information about values in ways other than making a comparison: not a comparison sort. Thus, our argument showing that Ω(n log n) comparisons were required in the worst case, does not apply. 19 Oct 2009 CS 311 Fall
20 Radix Sort Efficiency [2/2] In practice, Radix Sort is not really as fast as it might seem. There is a hidden logarithm. The number of passes required is equal to the length of a string, which is something like the logarithm of the number of possible values. The number of passes is fixed, since we limit the length of a string. This limits the number of possible values in the list. However, if we consider Radix Sort applied to a list in which all the values might be different, then it is in the same efficiency class as normal sorting algorithms. In certain special cases (e.g., big lists of small numbers) Radix Sort can be useful. 100 million records to sort by ZIP code? Radix Sort works well. 19 Oct 2009 CS 311 Fall
21 Sorting in the C++ STL Specifying the Interface Iterator-based sorting functions can be specified two ways: Given a range last is actually just past the end, as usual. template<typename Iterator> void sortit(iterator first, Iterator last); Given a range and a comparison. template<typename Iterator, typename Ordering> void sortit(iterator first, Iterator last, Ordering compare); compare, above, should be something you can use to compare two values. compare(val1, val2) should be a legal expression, and should return a bool: true if val1 comes before val2 (think less-than ). So compare can be a function (passed as a function pointer). It can also be an object with operator() defined: a function object. 19 Oct 2009 CS 311 Fall
22 Sorting in the C++ STL Overview of the Algorithms [1/4] The C++ Standard Template Library has six sorting algorithms: Global function std::sort Global function std::stable_sort Member function std::list<t>::sort Global functions std::partial_sort and partial_sort_copy. Combination of two global functions: std::make_heap & std::sort_heap We now look briefly at each of these. 19 Oct 2009 CS 311 Fall
23 Sorting in the C++ STL Overview of the Algorithms [2/4] Function std::sort, in <algorithm> Global function. Takes two random-access iterators and an optional comparison. O(n 2 ), but has O(n log n) average-case. This should become O(n log n) in the forthcoming revised C++ standard. It is currently O(n log n) in good STL implementations. Not stable. O(log n) additional space used. Algorithm used: Quicksort is what the standards committee was thinking. Introsort is what good implementations now use. Other algorithms (Heap Sort?) are possible, but unlikely. Function std::stable_sort, in <algorithm> Global function. Takes two random-access iterators and an optional comparison. O(n log n). Stable. O(n) additional space used. Algorithm used: probably Merge Sort, general sequence version. 19 Oct 2009 CS 311 Fall
24 Sorting in the C++ STL Overview of the Algorithms [3/4] Function std::list<t>::sort, in <list> Member function. Sorts only objects of type std::list<t>. Takes either no parameters or a comparison. O(n log n). Stable. Algorithm used: probably Merge Sort, Linked-List version. 19 Oct 2009 CS 311 Fall
25 Sorting in the C++ STL Overview of the Algorithms [4/4] We will look at the last two STL algorithms in more detail later in the semester, when we cover Priority Queues and Heaps: Functions std::partial_sort and std::partial_sort_copy, in <algorithm> Global functions. Take three random-access iterators and an optional comparison. O(n log n). Not stable. Solve a more general problem than comparison sorting. Algorithm used: probably Heap Sort. Combination: std::make_heap & std::sort_heap, in <algorithm> Both Global functions. Both take two random-access iterators and an optional comparison. Combination is O(n log n). Not stable. Solves a more general problem than comparison sorting. Algorithm used: Heap Sort. 19 Oct 2009 CS 311 Fall
26 Sorting in the C++ STL Using the Algorithms [1/2] Algorithm std::sort is declared in the header <algorithm>. Call it with two iterators: vector<int> v; std::sort(v.begin(), v.end()); // Ascending order Default constructor call. We can only pass an object, not a type. Or use two iterators and a comparison: std::sort(v.begin(), v.end(), std::greater<int>()); // Descending order Class template std::greater is defined in <functional>. Use std::stable_sort similarly to std::sort. 19 Oct 2009 CS 311 Fall
27 Sorting in the C++ STL Using the Algorithms [2/2] When sorting a std::list, use the sort member function: #include <list> std::list<int> mylist; mylist.sort(); // Ascending order mylist.sort(std::greater<int>()); // Descending order 19 Oct 2009 CS 311 Fall
Heaps & Priority Queues in the C++ STL 2-3 Trees
Heaps & Priority Queues in the C++ STL 2-3 Trees CS 3 Data Structures and Algorithms Lecture Slides Friday, April 7, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks
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
Node-Based Structures Linked Lists: Implementation
Linked Lists: Implementation CS 311 Data Structures and Algorithms Lecture Slides Monday, March 30, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks [email protected]
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
Linked Lists: Implementation Sequences in the C++ STL
Linked Lists: Implementation Sequences in the C++ STL continued CS 311 Data Structures and Algorithms Lecture Slides Wednesday, April 1, 2009 Glenn G. Chappell Department of Computer Science University
Recursion vs. Iteration Eliminating Recursion
Recursion vs. Iteration Eliminating Recursion continued CS 311 Data Structures and Algorithms Lecture Slides Monday, February 16, 2009 Glenn G. Chappell Department of Computer Science University of Alaska
Sequences in the C++ STL
CS 311 Data Structures and Algorithms Lecture Slides Wednesday, November 4, 2009 Glenn G. Chappell Department of Computer Science University of Alaska Fairbanks [email protected] 2005 2009 Glenn
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
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
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
CSE373: Data Structures and Algorithms Lecture 3: Math Review; Algorithm Analysis. Linda Shapiro Winter 2015
CSE373: Data Structures and Algorithms Lecture 3: Math Review; Algorithm Analysis Linda Shapiro Today Registration should be done. Homework 1 due 11:59 pm next Wednesday, January 14 Review math essential
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
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
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)
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
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
Why you shouldn't use set (and what you should use instead) Matt Austern
Why you shouldn't use set (and what you should use instead) Matt Austern Everything in the standard C++ library is there for a reason, but it isn't always obvious what that reason is. The standard isn't
Data Structures. Topic #12
Data Structures Topic #12 Today s Agenda Sorting Algorithms insertion sort selection sort exchange sort shell sort radix sort As we learn about each sorting algorithm, we will discuss its efficiency Sorting
The Union-Find Problem Kruskal s algorithm for finding an MST presented us with a problem in data-structure design. As we looked at each edge,
The Union-Find Problem Kruskal s algorithm for finding an MST presented us with a problem in data-structure design. As we looked at each edge, cheapest first, we had to determine whether its two endpoints
In mathematics, it is often important to get a handle on the error term of an approximation. For instance, people will write
Big O notation (with a capital letter O, not a zero), also called Landau's symbol, is a symbolism used in complexity theory, computer science, and mathematics to describe the asymptotic behavior of functions.
APP INVENTOR. Test Review
APP INVENTOR Test Review Main Concepts App Inventor Lists Creating Random Numbers Variables Searching and Sorting Data Linear Search Binary Search Selection Sort Quick Sort Abstraction Modulus Division
Binary Search Trees. Data in each node. Larger than the data in its left child Smaller than the data in its right child
Binary Search Trees Data in each node Larger than the data in its left child Smaller than the data in its right child FIGURE 11-6 Arbitrary binary tree FIGURE 11-7 Binary search tree Data Structures Using
Big Data and Scripting. Part 4: Memory Hierarchies
1, Big Data and Scripting Part 4: Memory Hierarchies 2, Model and Definitions memory size: M machine words total storage (on disk) of N elements (N is very large) disk size unlimited (for our considerations)
6 March 2007 1. Array Implementation of Binary Trees
Heaps CSE 0 Winter 00 March 00 1 Array Implementation of Binary Trees Each node v is stored at index i defined as follows: If v is the root, i = 1 The left child of v is in position i The right child of
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,
CS104: Data Structures and Object-Oriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team
CS104: Data Structures and Object-Oriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team Lecture Summary In this lecture, we learned about the ADT Priority Queue. A
Regular Expressions and Automata using Haskell
Regular Expressions and Automata using Haskell Simon Thompson Computing Laboratory University of Kent at Canterbury January 2000 Contents 1 Introduction 2 2 Regular Expressions 2 3 Matching regular expressions
CSE 326, Data Structures. Sample Final Exam. Problem Max Points Score 1 14 (2x7) 2 18 (3x6) 3 4 4 7 5 9 6 16 7 8 8 4 9 8 10 4 Total 92.
Name: Email ID: CSE 326, Data Structures Section: Sample Final Exam Instructions: The exam is closed book, closed notes. Unless otherwise stated, N denotes the number of elements in the data structure
Data Structures and Algorithms
Data Structures and Algorithms Lecture 4 2016 Stacks and... 1/28 1 2 Circular Linked 3 Queue Syntax and Functions in C++ 4 Stacks and... 2/28 FIFO and LIFO Outline Data structures can be specialized versions
Krishna Institute of Engineering & Technology, Ghaziabad Department of Computer Application MCA-213 : DATA STRUCTURES USING C
Tutorial#1 Q 1:- Explain the terms data, elementary item, entity, primary key, domain, attribute and information? Also give examples in support of your answer? Q 2:- What is a Data Type? Differentiate
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
Curriculum Map. Discipline: Computer Science Course: C++
Curriculum Map Discipline: Computer Science Course: C++ August/September: How can computer programs make problem solving easier and more efficient? In what order does a computer execute the lines of code
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
A Note on Maximum Independent Sets in Rectangle Intersection Graphs
A Note on Maximum Independent Sets in Rectangle Intersection Graphs Timothy M. Chan School of Computer Science University of Waterloo Waterloo, Ontario N2L 3G1, Canada [email protected] September 12,
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
Exam study sheet for CS2711. List of topics
Exam study sheet for CS2711 Here is the list of topics you need to know for the final exam. For each data structure listed below, make sure you can do the following: 1. Give an example of this data structure
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,
DATA STRUCTURES USING C
DATA STRUCTURES USING C QUESTION BANK UNIT I 1. Define data. 2. Define Entity. 3. Define information. 4. Define Array. 5. Define data structure. 6. Give any two applications of data structures. 7. Give
Cours de C++ Utilisations des conteneurs
Cours de C++ Utilisations des conteneurs Cécile Braunstein [email protected] 1 / 18 Introduction Containers - Why? Help to solve messy problems Provide useful function and data structure Consistency
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
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
SIMS 255 Foundations of Software Design. Complexity and NP-completeness
SIMS 255 Foundations of Software Design Complexity and NP-completeness Matt Welsh November 29, 2001 [email protected] 1 Outline Complexity of algorithms Space and time complexity ``Big O'' notation Complexity
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
Zabin Visram Room CS115 CS126 Searching. Binary Search
Zabin Visram Room CS115 CS126 Searching Binary Search Binary Search Sequential search is not efficient for large lists as it searches half the list, on average Another search algorithm Binary search Very
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
Rethinking SIMD Vectorization for In-Memory Databases
SIGMOD 215, Melbourne, Victoria, Australia Rethinking SIMD Vectorization for In-Memory Databases Orestis Polychroniou Columbia University Arun Raghavan Oracle Labs Kenneth A. Ross Columbia University Latest
Data Structures Using C++ 2E. Chapter 5 Linked Lists
Data Structures Using C++ 2E Chapter 5 Linked Lists Doubly Linked Lists Traversed in either direction Typical operations Initialize the list Destroy the list Determine if list empty Search list for a given
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
Efficiency of algorithms. Algorithms. Efficiency of algorithms. Binary search and linear search. Best, worst and average case.
Algorithms Efficiency of algorithms Computational resources: time and space Best, worst and average case performance How to compare algorithms: machine-independent measure of efficiency Growth rate Complexity
Lecture Notes on Binary Search Trees
Lecture Notes on Binary Search Trees 15-122: Principles of Imperative Computation Frank Pfenning Lecture 17 March 17, 2010 1 Introduction In the previous two lectures we have seen how to exploit the structure
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
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
DATABASE DESIGN - 1DL400
DATABASE DESIGN - 1DL400 Spring 2015 A course on modern database systems!! http://www.it.uu.se/research/group/udbl/kurser/dbii_vt15/ Kjell Orsborn! Uppsala Database Laboratory! Department of Information
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
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
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
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
CS 2112 Spring 2014. 0 Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions
CS 2112 Spring 2014 Assignment 3 Data Structures and Web Filtering Due: March 4, 2014 11:59 PM Implementing spam blacklists and web filters requires matching candidate domain names and URLs very rapidly
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.
Unordered Linked Lists
Unordered Linked Lists Derive class unorderedlinkedlist from the abstract class linkedlisttype Implement the operations search, insertfirst, insertlast, deletenode See code on page 292 Defines an unordered
Lecture 2: Data Structures Steven Skiena. http://www.cs.sunysb.edu/ skiena
Lecture 2: Data Structures Steven Skiena Department of Computer Science State University of New York Stony Brook, NY 11794 4400 http://www.cs.sunysb.edu/ skiena String/Character I/O There are several approaches
Binary Search Trees CMPSC 122
Binary Search Trees CMPSC 122 Note: This notes packet has significant overlap with the first set of trees notes I do in CMPSC 360, but goes into much greater depth on turning BSTs into pseudocode than
AP Computer Science AB Syllabus 1
AP Computer Science AB Syllabus 1 Course Resources Java Software Solutions for AP Computer Science, J. Lewis, W. Loftus, and C. Cocking, First Edition, 2004, Prentice Hall. Video: Sorting Out Sorting,
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
EFFICIENT EXTERNAL SORTING ON FLASH MEMORY EMBEDDED DEVICES
ABSTRACT EFFICIENT EXTERNAL SORTING ON FLASH MEMORY EMBEDDED DEVICES Tyler Cossentine and Ramon Lawrence Department of Computer Science, University of British Columbia Okanagan Kelowna, BC, Canada [email protected]
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
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
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
Persistent Binary Search Trees
Persistent Binary Search Trees Datastructures, UvA. May 30, 2008 0440949, Andreas van Cranenburgh Abstract A persistent binary tree allows access to all previous versions of the tree. This paper presents
Introduction to Programming (in C++) Sorting. Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC
Introduction to Programming (in C++) Sorting Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC Sorting Let elem be a type with a operation, which is a total order A vector
Lecture Notes on Binary Search Trees
Lecture Notes on Binary Search Trees 15-122: Principles of Imperative Computation Frank Pfenning André Platzer Lecture 17 October 23, 2014 1 Introduction In this lecture, we will continue considering associative
Big Data Technology Map-Reduce Motivation: Indexing in Search Engines
Big Data Technology Map-Reduce Motivation: Indexing in Search Engines Edward Bortnikov & Ronny Lempel Yahoo Labs, Haifa Indexing in Search Engines Information Retrieval s two main stages: Indexing process
On Sorting and Load Balancing on GPUs
On Sorting and Load Balancing on GPUs Daniel Cederman and Philippas Tsigas Distributed Computing and Systems Chalmers University of Technology SE-42 Göteborg, Sweden {cederman,tsigas}@chalmers.se Abstract
A binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key, and:
Binary Search Trees 1 The general binary tree shown in the previous chapter is not terribly useful in practice. The chief use of binary trees is for providing rapid access to data (indexing, if you will)
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
From Last Time: Remove (Delete) Operation
CSE 32 Lecture : More on Search Trees Today s Topics: Lazy Operations Run Time Analysis of Binary Search Tree Operations Balanced Search Trees AVL Trees and Rotations Covered in Chapter of the text From
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 >
Binary Search Trees. A Generic Tree. Binary Trees. Nodes in a binary search tree ( B-S-T) are of the form. P parent. Key. Satellite data L R
Binary Search Trees A Generic Tree Nodes in a binary search tree ( B-S-T) are of the form P parent Key A Satellite data L R B C D E F G H I J The B-S-T has a root node which is the only node whose parent
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
Record Storage and Primary File Organization
Record Storage and Primary File Organization 1 C H A P T E R 4 Contents Introduction Secondary Storage Devices Buffering of Blocks Placing File Records on Disk Operations on Files Files of Unordered Records
A Catalogue of the Steiner Triple Systems of Order 19
A Catalogue of the Steiner Triple Systems of Order 19 Petteri Kaski 1, Patric R. J. Östergård 2, Olli Pottonen 2, and Lasse Kiviluoto 3 1 Helsinki Institute for Information Technology HIIT University of
Introduction to Data Structures
Introduction to Data Structures Albert Gural October 28, 2011 1 Introduction When trying to convert from an algorithm to the actual code, one important aspect to consider is how to store and manipulate
Data Structures in the Java API
Data Structures in the Java API Vector From the java.util package. Vectors can resize themselves dynamically. Inserting elements into a Vector whose current size is less than its capacity is a relatively
Lecture 1: Data Storage & Index
Lecture 1: Data Storage & Index R&G Chapter 8-11 Concurrency control Query Execution and Optimization Relational Operators File & Access Methods Buffer Management Disk Space Management Recovery Manager
Loop Invariants and Binary Search
Loop Invariants and Binary Search Chapter 4.3.3 and 9.3.1-1 - Outline Ø Iterative Algorithms, Assertions and Proofs of Correctness Ø Binary Search: A Case Study - 2 - Outline Ø Iterative Algorithms, Assertions
Application of Stacks: Postfix Expressions Calculator (cont d.)
Application of Stacks: Postfix Expressions Calculator (cont d.) Postfix expression: 6 3 + 2 * = FIGURE 7-15 Evaluating the postfix expression: 6 3 + 2 * = Data Structures Using C++ 2E 1 Application of
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
6.080/6.089 GITCS Feb 12, 2008. Lecture 3
6.8/6.89 GITCS Feb 2, 28 Lecturer: Scott Aaronson Lecture 3 Scribe: Adam Rogal Administrivia. Scribe notes The purpose of scribe notes is to transcribe our lectures. Although I have formal notes of my
Glossary of Object Oriented Terms
Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction
BCS2B02: OOP Concepts and Data Structures Using C++
SECOND SEMESTER BCS2B02: OOP Concepts and Data Structures Using C++ Course Number: 10 Contact Hours per Week: 4 (2T + 2P) Number of Credits: 2 Number of Contact Hours: 30 Hrs. Course Evaluation: Internal
Binary Heaps * * * * * * * / / \ / \ / \ / \ / \ * * * * * * * * * * * / / \ / \ / / \ / \ * * * * * * * * * *
Binary Heaps A binary heap is another data structure. It implements a priority queue. Priority Queue has the following operations: isempty add (with priority) remove (highest priority) peek (at highest
THIS CHAPTER studies several important methods for sorting lists, both contiguous
Sorting 8 THIS CHAPTER studies several important methods for sorting lists, both contiguous lists and linked lists. At the same time, we shall develop further tools that help with the analysis of algorithms
Basic Programming and PC Skills: Basic Programming and PC Skills:
Texas University Interscholastic League Contest Event: Computer Science The contest challenges high school students to gain an understanding of the significance of computation as well as the details of
CSE 326: Data Structures B-Trees and B+ Trees
Announcements (4//08) CSE 26: Data Structures B-Trees and B+ Trees Brian Curless Spring 2008 Midterm on Friday Special office hour: 4:-5: Thursday in Jaech Gallery (6 th floor of CSE building) This is
Quiz 4 Solutions EECS 211: FUNDAMENTALS OF COMPUTER PROGRAMMING II. 1 Q u i z 4 S o l u t i o n s
Quiz 4 Solutions Q1: What value does function mystery return when called with a value of 4? int mystery ( int number ) { if ( number
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,
11 Multivariate Polynomials
CS 487: Intro. to Symbolic Computation Winter 2009: M. Giesbrecht Script 11 Page 1 (These lecture notes were prepared and presented by Dan Roche.) 11 Multivariate Polynomials References: MC: Section 16.6
An Introduction to Programming and Computer Science
An Introduction to Programming and Computer Science Maria Litvin Phillips Academy, Andover, Massachusetts Gary Litvin Skylight Software, Inc. Skylight Publishing Andover, Massachusetts Copyright 1998 by
