1 CS1110 6 April 2010 binary search, linear search insertion sort, selection sort, quick sort Do exercises on pp. 311-312 to get familiar with concepts.

Slides:



Advertisements
Similar presentations
Recursion Chapter 14. Overview Base case and general case of recursion. A recursion is a method that calls itself. That simplifies the problem. The simpler.
Advertisements

SORTING Lecture 12B CS2110 – Spring InsertionSort 2 pre: b 0 b.length ? post: b 0 b.length sorted inv: or: b[0..i-1] is sorted b 0 i b.length sorted.
MATH 224 – Discrete Mathematics
SEARCHING AND SORTING HINT AT ASYMPTOTIC COMPLEXITY Lecture 9 CS2110 – Spring 2015 We may not cover all this material.
CS Section 600 CS Section 002 Dr. Angela Guercio Spring 2010.
CMPT 225 Sorting Algorithms Algorithm Analysis: Big O Notation.
Stephen P. Carl - CS 2421 Recursive Sorting Algorithms Reading: Chapter 5.
Sorting. “Sorting” When we just say “sorting,” we mean in ascending order (smallest to largest) The algorithms are trivial to modify if we want to sort.
Computability Start complexity. Motivation by thinking about sorting. Homework: Finish examples.
Data Structures and Algorithms
Recitation on analysis of algorithms. runtimeof MergeSort /** Sort b[h..k]. */ public static void mS(Comparable[] b, int h, int k) { if (h >= k) return;
Software Engineering and Design Principles Chapter 1.
CS100J Nov 04, 2003 Arrays --sorting. Reading: 8.5 Please punctuate this: Dear John, I want a man who knows what love is all about you are generous kind.
1 CS100J 27 March 2007 Algorithms on arrays Reading: 8.3–8.5 Please punctuate this: Dear John, I want a man who knows what love is all about you are generous.
Quicksort. Quicksort I To sort a[left...right] : 1. if left < right: 1.1. Partition a[left...right] such that: all a[left...p-1] are less than a[p], and.
Quicksort.
1 Teaching the development of algorithms Teach skill, not only facts David Gries Computer Science Department Cornell University November 2004 DrJava is.
1 Algorithm Efficiency, Big O Notation, and Role of Data Structures/ADTs Algorithm Efficiency Big O Notation Role of Data Structures Abstract Data Types.
CS 106 Introduction to Computer Science I 03 / 03 / 2008 Instructor: Michael Eckmann.
Elementary Data Structures and Algorithms
CS 106 Introduction to Computer Science I 10 / 15 / 2007 Instructor: Michael Eckmann.
1 Algorithmic analysis Introduction. This handout tells you what you are responsible for concerning the analysis of algorithms You are responsible for:
1 © 2006 Pearson Addison-Wesley. All rights reserved Searching and Sorting Linear Search Binary Search -Reading p
CS 106 Introduction to Computer Science I 10 / 16 / 2006 Instructor: Michael Eckmann.
Value Iteration 0: step 0. Insertion Sort Array index67 Iteration i. Repeatedly swap element i with.
Simple Sorting Algorithms. 2 Bubble sort Compare each element (except the last one) with its neighbor to the right If they are out of order, swap them.
Sorting and Asymptotic Complexity
Recursive Quicksort Data Structures in Java with JUnit ©Rick Mercer.
Recitation 11 Analysis of Algorithms and inductive proofs 1.
1 Programming with Recursion. 2 Recursive Function Call A recursive call is a function call in which the called function is the same as the one making.
Computer Science Searching & Sorting.
1 Searching and Sorting Linear Search Binary Search.
C++ Programming: From Problem Analysis to Program Design, Second Edition Chapter 19: Searching and Sorting.
COMP Recursion, Searching, and Selection Yi Hong June 12, 2015.
CS 61B Data Structures and Programming Methodology July 28, 2008 David Sun.
ASYMPTOTIC COMPLEXITY CS2111 CS2110 – Fall
Examples of Recursion Data Structures in Java with JUnit ©Rick Mercer.
CS 100Lecture 131 Announcements Exam stats P3 due on Thursday.
Java Methods Big-O Analysis of Algorithms Object-Oriented Programming
Recitation on analysis of algorithms. Formal definition of O(n) We give a formal definition and show how it is used: f(n) is O(g(n)) iff There is a positive.
Algorithms Java Methods A & AB Object-Oriented Programming and Data Structures Maria Litvin ● Gary Litvin Copyright © 2006 by Maria Litvin, Gary Litvin,
1 CS November 2010 insertion sort, selection sort, quick sort Do exercises on pp to get familiar with concepts and develop skill. Practice.
CS 106 Introduction to Computer Science I 03 / 02 / 2007 Instructor: Michael Eckmann.
Computer Science 1620 Sorting. cases exist where we would like our data to be in ascending (descending order) binary searching printing purposes selection.
Searching CSE 103 Lecture 20 Wednesday, October 16, 2002 prepared by Doug Hogan.
1 CS April 2009 Sorting: insertion sort, selection sort, quick sort Do exercises on pp to get familiar with concepts and develop skill.
0 Introduction to asymptotic complexity Search algorithms You are responsible for: Weiss, chapter 5, as follows: 5.1 What is algorithmic analysis? 5.2.
Quicksort This is probably the most popular sorting algorithm. It was invented by the English Scientist C.A.R. Hoare It is popular because it works well.
Copyright © 2014 Curt Hill Algorithms From the Mathematical Perspective.
1 CS November 2008 Sorting: insertion sort, selection sort, quick sort Do exercises on pp to get familiar with concepts and develop skill.
CORRECTNESS ISSUES AND LOOP INVARIANTS Lecture 8 CS2110 – Fall 2014.
1 CS April 2010 insertion sort, selection sort, quick sort Do exercises on pp to get familiar with concepts and develop skill. Practice.
1 CS100J 21 March 2006 Arrays: searching & sorting. Reading: 8.5 Please punctuate this: Dear John, I want a man who knows what love is all about you are.
Recitation 13 Searching and Sorting.
"Organizing is what you do before you do something, so that when you do it, it is not all mixed up." ~ A. A. Milne Sorting Lecture 11 CS2110 – Fall 2018.
CS100A Lecture 15, 17 22, 29 October 1998 Sorting
Search,Sort,Recursion.
Asymptotic complexity Searching/sorting
"Organizing is what you do before you do something, so that when you do it, it is not all mixed up." ~ A. A. Milne Sorting Lecture 11 CS2110 – Spring 2019.
Asymptotic complexity
Sorting and Asymptotic Complexity
Searching and Sorting Hint at Asymptotic Complexity
CS100A Lecture 15, 17 22, 29 October 1998 Sorting
Searching and Sorting Hint at Asymptotic Complexity
Linear and Binary Search
Searching and Sorting Hint at Asymptotic Complexity
Searching and Sorting Hint at Asymptotic Complexity
Presentation transcript:

1 CS April 2010 binary search, linear search insertion sort, selection sort, quick sort Do exercises on pp to get familiar with concepts and develop skill. Practice in DrJava! Test your methods! Today, we will develop some of the algorithms that we mentioned last time. Then, we will move on to some of the algorithms shown in this handout. These slides will be used next time, too. We will attempt to go slowly enough that you can all understand the concepts and learn to develop these algorithms.

2 Comments on A5 Recursion: Make requirements/descriptions less ambiguous, clearer; give more direction. Need optional problem with more complicated recursive solution would have been an interesting challenge, more recursive functions. They make us think! Make task 5 easier. I could not finish it. Liked not having to write test cases! Needed too much help, took too long Add more methods; it did not take long Allow us to do recursive methods with loops rather than recursively. Good time drinking beer while watching the demo after I was done. I had intended here to erupt in largely incoherent rage over that wretched concept of recursion, which I came to hate like an enemy: like a sentient being who, knowing the difference between right and wrong, had purposely chosen to do me harm. However, I then figured out how it works, and it is actually quite elegant, so now I suppose I have learned something against my will.

3 Sorting: ? 0 n pre: b sorted 0 n post: b sorted ? 0 i ninsertion sort inv: b for (int i= 0; i < n; i= i+1) { } “sorted” means in ascending order i i Push b[i] down into its sorted position in b[0..i]; Iteration i makes up to i swaps. In worst case, number of swaps needed is … (n-1) = (n-1)*n / 2. Called an “n-squared”, or n 2, algorithm. b[0..i-1]: i elements in worst case: Iteration 0: 0 swaps Iteration 1: 1 swap Iteration 2: 2 swaps …

4 ? 0n0n pre: b sorted 0n0n post: b Add property to invariant: first segment contains smaller values. ≤ b[i..], sorted ≥ b[0..i-1], ? 0 i n invariant: b selection sort sorted ? 0 i n invariant: b insertion sort for (int i= 0; i < n; i= i+1) { } i n i n 7 int j= index of min of b[i..n-1]; Swap b[j] and b[i]; Also an “n-squared”, or n 2, algorithm.

5 Quicksort /** Sort b[h..k] */ public static void qsort(int[] b, int h, int k) { } if (b[h..k] has fewer than 2 elements) return; j= partition(b, h, k); = x h j k post: b x ? h k pre: b int j= partition(b, h, k); // b[h..j–1] <= b[j] <= b[j+1..k] // Sort b[h..j–1] and b[j+1..k] qsort(b, h, j–1); qsort(b, j+1, k); To sort array of size n. e.g Worst case: n 2 e.g Average case: n log n. e.g. 15 * = 32768

6 Tony Hoare, in 1968 Quicksort author Tony Hoare in 2007 in Germany Thought of Quicksort in ~1958. Tried to explain it to a colleague, but couldn’t. Few months later: he saw a draft of the definition of the language Algol 58 –later turned into Algol 60. It had recursion. He went and explained Quicksort to his colleague, using recursion, who now understood it.

Viewpoint On teaching programming Reply 7 I don't like how we are forced to visualize things in Dr. Gries' way. … Entire point of programming is to be able to look at things in different ways and come up with different solutions for one problem. Forcing us to think of things in his way and testing us on it has been detrimental to my learn- ing because in my opinion it wastes time and confuses me. This course should focus more on solving problems rather than drawing folders to represent objects. 1. A model of execution of Java programs is needed in order to bring understanding. 2. Problem solving is the focus. The programs you wrote for A5, the algorithms we are now studying, and the way we develop them, could not have been possible without the basics that we have given you. 3. We are giving you tools for coming up with good solutions, not just different ones.

The NATO Software Engineering Conferences homepages.cs.ncl.ac.uk/brian.randell/NATO/ 7-11 Oct 1968, Garmisch, Germany Oct 1969, Rome, Italy Download Proceedings, which have transcripts of discussions. See photographs. Software crisis: Academic and industrial people. Admitted for first time that they did not know how to develop software efficiently and effectively.

9 Software Engineering, 1968 Next years: intense period of research of software engineering, language design, proving programs correct, etc.

10 Software Engineering, 1968

During 1970s, 1980s, intense research on How to prove programs correct, How to make it practical, Methodology for developing algorithms 11 The way we understand recursive methods is based on that methodology. Our understanding of and development of loops is based on that methodology. Throughout, we try to give you thought habits to help you solve programming problems for effectively Mark Twain: Nothing needs changing so much as the habits of others.

12 The way we understand recursive methods is based on that methodology. Our understanding of and development of loops is based on that methodology. Throughout, we try to give you thought habits to help you solve programming problems for effectively Simplicity is key: Learn not only to simplify, learn not to complify. Separate concerns, and focus on one at a time. Don’t solve a problem until you know what the problem is (give precise and thorough specs). Develop and test incrementally. Learn to read a program at different levels of abstraction.