Announcements P2 is due tomorrow Prelim on Monday

Slides:



Advertisements
Similar presentations
CS0007: Introduction to Computer Programming Array Algorithms.
Advertisements

Chapter 8 Search and Sort Asserting Java ©Rick Mercer.
CS 106 Introduction to Computer Science I 03 / 07 / 2008 Instructor: Michael Eckmann.
CS 106 Introduction to Computer Science I 03 / 03 / 2008 Instructor: Michael Eckmann.
Analysis of Algorithm.
Searching Chapter Chapter Contents The Problem Searching an Unsorted Array Iterative Sequential Search Recursive Sequential Search Efficiency of.
1 Algorithmic analysis Introduction. This handout tells you what you are responsible for concerning the analysis of algorithms You are responsible for:
CS 106 Introduction to Computer Science I 10 / 16 / 2006 Instructor: Michael Eckmann.
CS 106 Introduction to Computer Science I 03 / 17 / 2008 Instructor: Michael Eckmann.
Search Lesson CS1313 Spring Search Lesson Outline 1.Searching Lesson Outline 2.How to Find a Value in an Array? 3.Linear Search 4.Linear Search.
1 Chapter 24 Developing Efficient Algorithms. 2 Executing Time Suppose two algorithms perform the same task such as search (linear search vs. binary search)
1 Searching. 2 Searching Searching refers to the operation of finding an item from a list of items based on some key value. Two Searching Methods (1)
C++ Programming: From Problem Analysis to Program Design, Second Edition Chapter 19: Searching and Sorting.
CIS3023: Programming Fundamentals for CIS Majors II Summer 2010 Ganesh Viswanathan Searching Course Lecture Slides 28 May 2010 “ Some things Man was never.
Searching. Linear (Sequential) Search Search an array or list by checking items one at a time. Linear search is usually very simple to implement, and.
CSC 211 Data Structures Lecture 13
CS 100Lecture 131 Announcements Exam stats P3 due on Thursday.
CS November 2010 Developing array algorithms. Reading: Haikus (5-7-5) seen on Japanese computer monitors Yesterday it worked. Today it is.
Chapter 8 Search and Sort ©Rick Mercer. Outline Understand how binary search finds elements more quickly than sequential search Sort array elements Implement.
CS 106 Introduction to Computer Science I 03 / 02 / 2007 Instructor: Michael Eckmann.
1. Searching The basic characteristics of any searching algorithm is that searching should be efficient, it should have less number of computations involved.
Searching Topics Sequential Search Binary Search.
0 Introduction to asymptotic complexity Search algorithms You are responsible for: Weiss, chapter 5, as follows: 5.1 What is algorithmic analysis? 5.2.
LECTURE 9 CS203. Execution Time Suppose two algorithms perform the same task such as search (linear search vs. binary search) and sorting (selection sort.
Searching Arrays Linear search Binary search small arrays
Searching and Sorting Searching algorithms with simple arrays
16 Searching and Sorting.
Growth of Functions & Algorithms
Chapter 15 Recursion.
OBJECT ORIENTED PROGRAMMING II LECTURE 23 GEORGE KOUTSOGIANNAKIS
Correctness issues and Loop invariants
COP 3503 FALL 2012 Shayan Javed Lecture 15
Lecture 14 Searching and Sorting Richard Gesick.
Introduction to Search Algorithms
Chapter 15 Recursion.
Recitation 13 Searching and Sorting.
Search Lesson Outline Searching Lesson Outline
CS100J 30 October 2007 Algorithms on arrays Reading: 8.3–8.5
Chapter 7 Sorting Spring 14
Teach A level Computing: Algorithms and Data Structures
Recursion "To understand recursion, one must first understand recursion." -Stephen Hawking.
Searching.
Chapter 8 Search and Sort
Lecture 11 Searching and Sorting Richard Gesick.
CS 201 Fundamental Structures of Computer Science
Applied Discrete Mathematics Week 6: Computation
CS100A Lecture 15, 17 22, 29 October 1998 Sorting
25 Searching and Sorting Many slides modified by Prof. L. Lilien (even many without an explicit message indicating an update). Slides added or modified.
Searching and Sorting Topics Sequential Search on an Unordered File
CSE 373 Data Structures and Algorithms
Searching CLRS, Sections 9.1 – 9.3.
24 Searching and Sorting.
Sorting "There's nothing in your head the sorting hat can't see. So try me on and I will tell you where you ought to be." -The Sorting Hat, Harry Potter.
Searching, Sorting, and Asymptotic Complexity
Asymptotic complexity Searching/sorting
EE 312 Software Design and Implementation I
Review of Searching and Sorting Algorithms
Ch. 2: Getting Started.
Binary Search and Loop invariants
Asymptotic complexity
CS November 2010 Developing array algorithms. Reading:
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
Searching.
Module 8 – Searching & Sorting Algorithms
Presentation transcript:

Announcements P2 is due tomorrow Prelim on Monday Review Session on Friday in class Quiz today CS100 Lecture 11

Today’s Topics Review Search Algorithms Linear Search Binary Search Lecture 11

Review of Arrays How to declare an array? What do we use arrays for? What is the subscript in g[3*x] ? Initializer lists Syntax choices CS100 Lecture 11

The Search Problem Linear Search: Find (the value of) x in array b. This description is too vague, for several reasons: How are we to indicate that x appears in b? What if it appears more than once in b? What is to be done if x is not in b? In general, when approaching a new programming job, the first task is to make the specification of the job as precise as possible. CS100 Lecture 11

More specifically. . . One way to specify the task: Write a method that returns the index of the first element of b that equals x. If x does not occur in b, return b.length. Example: b = {1, 2, 8, 5, 2, 9} (so b.length = 6) If x is 1, return 0 If x is 2, return 1 If x is 5, return 3 if x is 3, return 6 CS100 Lecture 11

How do we construct the algorithm? // return value i that satisfies: 0<=i<=b.length, // x not in b[0..i-1], // (i = b.length or x=b[i]) public static int linearSearch (int [ ] b, int x) Need a loop. It will compare elements of b with x, beginning with b[0], b[1], … Invariant: 0<=i<=b.length and x not in b[0..i-1] x is not here 0 i b.length b CS100 Lecture 11

One linear search solution // return the value i that satisfies: 0<=i<=b.length, // x not in b[0..i-1], and (i = b.length or x=b[i]) public static int linearSearch (int [ ] b, int x) { int i= 0; // Inv: 0<=i<=b.length and x not in b[0..i-1], while (i < b.length && x != b[i]) i= i+1; return i; } CS100 Lecture 11

A second linear search solution int i= 0; // Inv: 0<=i<=b.length and x not in b[0..i-1], while (i < b.length) { if (x == b[i]) return i; i= i+1; } return i; CS100 Lecture 11

Efficiency What does it mean for an algorithm to be efficient? One way is to think about much compute-time is being spent. How many comparisons are made, for example? There is a whole field of computer science that looks at analyzing the cost of algorithms We’ll just touch on it briefly. CS100 Lecture 11

Cost of Linear Search Worst case: We have to make b.length comparisons Can we do better than this? Suppose we’re looking for someone’s name in a NYC phonebook -- would you use linear search? CS100 Lecture 11

Binary Search Assume that the array b is sorted in ascending order Compare the item your interested in to the center of the list If it’s greater, repeat search on one half, if smaller, repeat on the other half -- and continue. . . Each comparison thus eliminates half of the remaining possibilities CS100 Lecture 11

Simple idea, but . . . Method dates back to 1946 -- it wasn’t until 1962 that a bug-free version appeared! One study (albeit in ‘83) showed that 90% of programmers fail to code up binary search correctly. So, we’ll play with some formal algorithmic stuff for awhile before looking at Java CS100 Lecture 11

Algorithm Development Specification. Store an integer in k to truthify: b[0..k] <= x < b[k+1..b.length-1] Examples: b x 1 2 3 4 5 6 7 8 9 10 k -1 0 3 3 4 5 5 7 8 8 <= x >x 0 k b.length b 2 3 3 3 5 6 8 8 9 0 1 2 3 4 5 6 7 8 CS100 Lecture 11

Invariant? Store an integer in k to truthify b[0..k] <= x < b[k+1..b.length-1] Invariant <= x >x 0 k b.length b <= x >x 0 k j b.length CS100 Lecture 11

Let’s fill in the blanks j= ; while ( ) { int e = ; // We know that -1 <= k < e < j <= b.length if ( b[e] <= x ) else } CS100 Lecture 11

Binary Search in Java // Given sorted b, return the integer k that satisfies // b[0..k] <= x < b[k+1..b.length-1] public static int binarySearch( int [ ] b) { int k= -1; int j= b.length; // Invariant: -1 <= k < j <= b.length and // b[0..k] <= x < b[k+1..b.length] while (k+1 != j) { int e = (k+j)/2; // We know -1 <= k < e < j <= b.length if ( b[e] <= x ) k= e; else j= e; } return k; CS100 Lecture 11

About this algorithm It works when the array is empty (b.length = 0) --return -1. If x is in b, finds its rightmost occurrence If x is not in b, finds position where it belongs In general, it’s faster than a binary search that stops as soon as x is found. The latter kind of binary search needs an extra test (x = b[k]) in the loop body, which makes each iteration slower; however, stopping as soon as x is found can be shown to save only one iteration (on the average). It’s easy to verify correctness of the algorithm --to see that it works. CS100 Lecture 11

How fast is binary search? b.length no.of iterations log(b.length+1) 0 = 20 - 1 0 0 1 = 21 - 1 1 1 3 = 22 - 1 2 2 7 = 23 - 1 3 3 15 = 24 - 1 4 4 32767 = 215 -1 15 15 1048575= 220 -1 20 20 j is the “base 2 logarithm of 2j. m is the base 10 logarithm of 10m. CS100 Lecture 11

So, how fast? To search an array of a million entries using linear search may require a million iterations of the loop. To search an array of a million entries using binary search requires only 20 iteration! Linear search is a linear algorithm; the time it takes is proportional in the worst case to the size of the array. Binary search is a logarithmic algoririthm; the time it takes is proportional in the worst case to the log of the size of the array. CS100 Lecture 11

Classes redux Suppose we want to manipulate geometric objects Superclass: geometricObject Potential subclasses: Triangle Square Rectangle CS100 Lecture 11

The Big Picture Triangle sideOne sideTwo sideThree isEquilateral isRight area GeometricObject color numSides area Rectangle length width area Square side area isRhombus CS100 Lecture 11