Search - CIS 1068 Program Design and Abstraction Zhen Jiang CIS Dept. Temple University SERC 347, Main Campus 19/23/2015.

Slides:



Advertisements
Similar presentations
Zabin Visram Room CS115 CS126 Searching
Advertisements

College of Information Technology & Design
Searching for Data Relationship between searching and sorting Simple linear searching Linear searching of sorted data Searching for string or numeric data.
CSE Lecture 3 – Algorithms I
Problem Solving 5 Using Java API for Searching and Sorting Applications ICS-201 Introduction to Computing II Semester 071.
Copyright © 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Eighth Edition by Tony Gaddis,
Chapter 9: Searching, Sorting, and Algorithm Analysis
Copyright © 2012 Pearson Education, Inc. Chapter 8: Searching and Sorting Arrays.
HST 952 Computing for Biomedical Scientists Lecture 9.
1 Lecture 23 Searching Overview  What is Searching?  Linear Search and its Implementation.  Brief Analysis of Linear Search.  Binary Search and its.
1 11/27/06CS150 Introduction to Computer Science 1 Searching Arrays.
Chapter 8 Search and Sort Asserting Java ©Rick Mercer.
CS 106 Introduction to Computer Science I 03 / 07 / 2008 Instructor: Michael Eckmann.
1 Searching Algorithms Overview  What is Searching?  Linear Search and its Implementation.  Brief Analysis of Linear Search.  Binary Search and its.
 2003 Prentice Hall, Inc. All rights reserved Sorting Arrays Sorting data –Important computing application –Virtually every organization must sort.
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 - CIS 1068 Program Design and Abstraction
1 CSC 222: Computer Programming II Spring 2005 Searching and efficiency  sequential search  big-Oh, rate-of-growth  binary search  example: spell checker.
Chapter 8 ARRAYS Continued
Searching Algorithms. The Search Problem Problem Statement: Given a set of data e.g., int [] arr = {10, 2, 7, 9, 7, 4}; and a particular value, e.g.,
Searching Searching: –Mainly used for: Fetching / Retrieving the Information such as, –Select query on a database. –Important thing is: Retrieval of Information.
Chapter 5 Ordered List. Overview ● Linear collection of entries  All the entries are arranged in ascending or descending order of keys.
Week 11 Introduction to Computer Science and Object-Oriented Programming COMP 111 George Basham.
Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 8: Searching and Sorting Arrays.
Copyright © 2012 Pearson Education, Inc. Chapter 8: Searching and Sorting Arrays.
Applications of Arrays (Searching and Sorting) and Strings
SEARCHING UNIT II. Divide and Conquer The most well known algorithm design strategy: 1. Divide instance of problem into two or more smaller instances.
SEARCHING (Linear/Binary). Searching Algorithms  method of locating a specific item of information in a larger collection of data.  two popular search.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 8: Searching and Sorting Arrays.
P-1 University of Washington Computer Programming I Lecture 15: Linear & Binary Search ©2000 UW CSE.
Chapter 2 ARRAYS.
SEARCHING. Vocabulary List A collection of heterogeneous data (values can be different types) Dynamic in size Array A collection of homogenous data (values.
CIS3023: Programming Fundamentals for CIS Majors II Summer 2010 Ganesh Viswanathan Searching Course Lecture Slides 28 May 2010 “ Some things Man was never.
SEARCHING.  This is a technique for searching a particular element in sequential manner until the desired element is found.  If an element is found.
CSC 211 Data Structures Lecture 13
“Enthusiasm releases the drive to carry you over obstacles and adds significance to all you do.” – Norman Vincent Peale Thought for the Day.
Chapter 14: Searching and Sorting
Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda Modified for use by MSU Dept. of Computer Science.
Data Structure Introduction.
ITEC 2620M Introduction to Data Structures Instructor: Prof. Z. Yang Course Website: ec2620m.htm Office: Tel 3049.
CS261 Data Structures Ordered Bag Dynamic Array Implementation.
1 CISC181 Introduction to Computer Science Dr. McCoy Lecture 13 October 13, 2009.
Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data.
CHAPTER 8 SEARCHING CSEB324 DATA STRUCTURES & ALGORITHM.
Chapter 8 Search and Sort ©Rick Mercer. Outline Understand how binary search finds elements more quickly than sequential search Sort array elements Implement.
Chapter 9 slide 1 Introduction to Search Algorithms Search: locate an item in a list (array, vector, table, etc.) of information Two algorithms (methods):
 2007 Pearson Education, Inc. All rights reserved C Arrays.
Array - CIS 1068 Program Design and Abstraction Zhen Jiang CIS Dept. Temple University SERC 347, Main Campus 12/19/20151.
Chapter 11Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Chapter 11 l Basics of Recursion l Programming with Recursion Recursion.
Contest Algorithms January 2016 Pseudo-code for divide and conquer, and three examples (binary exponentiation, binary search, and mergesort). 5. Divide.
CS 106 Introduction to Computer Science I 03 / 02 / 2007 Instructor: Michael Eckmann.
Searching and Sorting Searching: Sequential, Binary Sorting: Selection, Insertion, Shell.
Data Structures and Algorithms Searching Algorithms M. B. Fayek CUFE 2006.
Course Code #IDCGRF001-A 5.1: Searching and sorting concepts Programming Techniques.
Java Programming: From Problem Analysis to Program Design, 4e Chapter 14 Searching and Sorting.
1. Searching The basic characteristics of any searching algorithm is that searching should be efficient, it should have less number of computations involved.
Attribute - CIS 1068 Program Design and Abstraction Zhen Jiang CIS Dept. Temple University SERC 347, Main Campus 12/24/2016.
Data Structures Arrays and Lists Part 2 More List Operations.
Sorting & Searching Geletaw S (MSC, MCITP). Objectives At the end of this session the students should be able to: – Design and implement the following.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy.
Sorting - CIS 1068 Program Design and Abstraction Zhen Jiang CIS Dept. Temple University SERC 347, Main Campus 13/14/2016.
 Introduction to Search Algorithms  Linear Search  Binary Search 9-2.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 8: Searching and Sorting Arrays.
COP 3503 FALL 2012 Shayan Javed Lecture 15
Chapter 7 Single-Dimensional Arrays
Outline Late Binding Polymorphism via Inheritance
Searching and Sorting Arrays
Binary Search A binary search algorithm finds the position of a specified value within a sorted array. Binary search is a technique for searching an ordered.
Sorting and Searching -- Introduction
Presentation transcript:

Search - CIS 1068 Program Design and Abstraction Zhen Jiang CIS Dept. Temple University SERC 347, Main Campus 19/23/2015

Table of Contents Introduction to searching problem Problem statement Linear search algorithm Binary search Binary search algorithm How much fast is binary search? Search mechanics in java Summary 29/23/2015

The Search Problem Considering a sequence of characters that are contained in a string e.g., String str= “hello”; and a particular character in another string, e.g., String str2 = “l”; Find 1 st appearance of such a character in the original group e.g., return str.indexOf(str2) 9/23/20153

Problem Statement Given a set of data e.g., int [] arr = {10, 2, 7, 9, 7, 4}; and a particular value, e.g., int val = 7; Find the first index/position of the value in the data. e.g., return index = 2 9/23/20154

Problem Statement, revisited: Input: A set of data (an array, ArrayList, LinkedList, …) A single data element Output: Position of the data element in the data set, or -1 if the element does not appear in the data set 9/23/20155

For instance Price is right (click on this link to try)this link To see if you can get the price quickly… 9/23/20156

Linear Search Algorithm (p541) # Input: Array D, integer key # Output: first index of key in D, # or -1 if not found # also called sequential search For i = 0 to last index of D: if D[i] equals key: return i return -1 9/23/20157

# Input: Array D of Business objects, # phone number key # Output: first index where key’s phone # number matches D, or -1 if not found Business: phone # address name For i:= 0 to end of D: if D[i].phone matches key: return i return -1 9/23/20158

1. Implement a class called Business that includes fields for name, address, and phone number, plus a constructor and accessor methods. 2. Create a class called YellowPages that stores a set of Business objects in an array. 3. Write a LinearSearch method for the YellowPages class that finds the index of a Business, given its phone number. 9/23/20159

Binary Search Imagine finding the price among the range up to $100,000,000 Linear search would take a long time Random guess is even worse! 9/23/201510

Two common search techniques are: Indexing (used on the Web and in databases) Imagine flipping through the Yellow Pages, looking for a pizza place near you. It’s pretty easy – you just flip to the section for ‘P’, then look for ‘Pi’, then ‘Piz’, …, ‘Pizza’. We can learn about indexing in later CIS classes Binary search We’ll discuss binary search because it’s simpler 9/23/201511

Now imagine doing the reverse: find the name of a business given just their phone number. What algorithm will find the number in the phone book? Answer: you need to use (some version of) linear search! Ugh. 9/23/201512

Normally, when you search the phone book, you implicitly use the fact that it’s sorted: The smallest element (alphabetically first element) appears first. Then the next smallest, … Then the biggest (alphabetically last) element. Binary search does the same thing, and it only works if your data (array) is sorted. 9/23/201513

Find key: left rightmid Step 1: Define left and right boundaries for searching Step 2: Define middle of the search region Step 3: Compare the middle with our key Comparison: D[mid] < key left Repeat! mid Comparison: D[mid] = key! 9/23/201514

Binary Search Algorithm # Input: Sorted Array D, integer key # Output: first index of key in D, or -1 if not found left = 0, right = index of last element while left <= right: middle = index halfway between left, right if D[middle] matches key: return middle else if key comes before D[middle]:// b/c D is sorted right = middle -1 else: left = middle + 1 return -1 9/23/201515

public static int bs(int [ ] n, int first, int last, int v){ int middle; if (first > last) return -1; middle = (first + last)/2; if(n[middle] = = v) return middle; else if ( n[middle] < v) return bs(n, middle+1, last, v); else return bs(n, first, middle-1, v); } 9/23/201516

Find out what will be the print out results of the following program and trace the position (subscript value) of each access of the array n (i.e., the value of variable middle). public class ArrayRecursive { public static void main(String [ ] args){ int [ ] n = {101, 142, 147, 189, 199, 207, 222, 234, 289, 296, 310, 319, 388, 394, 417, 429, 447, 521, 536, 600}; System.out.println( “bs(”+102+“)=”+bs(n, 0, n.length-1, 102)); System.out.println( “bs(”+296+“)=”+bs(n, 0, n.length-1, 296)); System.out.println( “bs(”+289+“)=”+bs(n, 0, n.length-1, 289)); } 9/23/201517

Implement a binary search method in your Business class 9/23/201518

How much faster is binary search? Way, way faster Assuming the array is already sorted But precisely how much? For an array of size: Linear search might visit: Binary search might visit: 2 4 = 1616elements4+1 = log 2 (16) = elements8+1 = log 2 (256) = elements12+1 = log 2 (4096)+1 2 n = m elementsm elementsn + 1 = log 2 (m) + 1 9/23/201519

The Java class Arrays has numerous helpful methods built in, including a binary search method: public static int binarySearch(int[] a, int key):binarySearch Searches the specified array of ints for the specified value using the binary search algorithm. Example: int index = Arrays.binarySearch(arr, 29); Java Mechanics in Java 9/23/201520

The requirement for it to work (array is pre-sorted) How to simulate it on an example array That is, what sequence of indexes are compared with the key for a specific input key? Write the binary search algorithm for it Advantages and disadvantages compared with linear search (also called sequential search) How to use Arrays.binarySearch ( ) 219/23/2015 Summary