8.1. Chapter 8: Introduction to Search Algorithms. Linear Search. Linear Search. Linear Search - Example 3/12/2013. Introduction to Search Algorithms

Similar documents
Zabin Visram Room CS115 CS126 Searching. Binary Search

Analysis of Binary Search algorithm and Selection Sort algorithm

Binary search algorithm

Searching Algorithms

Sorting Algorithms. Nelson Padua-Perez Bill Pugh. Department of Computer Science University of Maryland, College Park

Class : MAC 286. Data Structure. Research Paper on Sorting Algorithms

6. Standard Algorithms

Efficiency of algorithms. Algorithms. Efficiency of algorithms. Binary search and linear search. Best, worst and average case.

Lecture Notes on Linear Search

Outline. Introduction Linear Search. Transpose sequential search Interpolation search Binary search Fibonacci search Other search techniques

Pseudo code Tutorial and Exercises Teacher s Version

Recursion. Slides. Programming in C++ Computer Science Dept Va Tech Aug., Barnette ND, McQuain WD

Introduction to Programming (in C++) Sorting. Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC

Ordered Lists and Binary Trees

What Is Recursion? Recursion. Binary search example postponed to end of lecture

Arrays. number: Motivation. Prof. Stewart Weiss. Software Design Lecture Notes Arrays

DATA STRUCTURES USING C

recursion here it is in C++ power function cis15 advanced programming techniques, using c++ fall 2007 lecture # VI.1

Output: struct treenode{ int data; struct treenode *left, *right; } struct treenode *tree_ptr;

Cours de C++ Utilisations des conteneurs

1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++

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

Simple sorting algorithms and their complexity. Bubble sort. Complexity of bubble sort. Complexity of bubble sort. Bubble sort of lists

What Is Recursion? 5/12/10 1. CMPSC 24: Lecture 13 Recursion. Lecture Plan. Divyakant Agrawal Department of Computer Science UC Santa Barbara

Data Structures. Topic #12

CSC148 Lecture 8. Algorithm Analysis Binary Search Sorting

Chapter 6 Load Balancing

Symbol Tables. Introduction

Data Structures. Algorithm Performance and Big O Analysis

BCS2B02: OOP Concepts and Data Structures Using C++

Data Structures and Algorithms

Paper Merges and Joins Timothy J Harrington, Trilogy Consulting Corporation

GRID SEARCHING Novel way of Searching 2D Array

Binary Heaps * * * * * * * / / \ / \ / \ / \ / \ * * * * * * * * * * * / / \ / \ / / \ / \ * * * * * * * * * *

Recursion and Dynamic Programming. Biostatistics 615/815 Lecture 5

Section IV.1: Recursive Algorithms and Recursion Trees

Binary Heap Algorithms

Chapter Objectives. Chapter 9. Sequential Search. Search Algorithms. Search Algorithms. Binary Search

Analysis of a Search Algorithm

South East of Process Main Building / 1F. North East of Process Main Building / 1F. At 14:05 April 16, Sample not collected

HERZING UNIVERSITY ACADEMIC CALENDAR

Class Overview. CSE 326: Data Structures. Goals. Goals. Data Structures. Goals. Introduction

4.2 Sorting and Searching

Data Structures and Data Manipulation

Chapter 7: Sequential Data Structures

CSC 180 H1F Algorithm Runtime Analysis Lecture Notes Fall 2015

A Catalogue of the Steiner Triple Systems of Order 19

CSE373: Data Structures and Algorithms Lecture 3: Math Review; Algorithm Analysis. Linda Shapiro Winter 2015

4.2: Multimedia File Systems Traditional File Systems. Multimedia File Systems. Multimedia File Systems. Disk Scheduling

5. A full binary tree with n leaves contains [A] n nodes. [B] log n 2 nodes. [C] 2n 1 nodes. [D] n 2 nodes.

Loop Invariants and Binary Search

Data Structure with C

CMSC 132: Object-Oriented Programming II. Design Patterns I. Department of Computer Science University of Maryland, College Park

Algorithms and Data Structures Written Exam Proposed SOLUTION

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:

Introduction to Programming (in C++) Multi-dimensional vectors. Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC

Algorithm Analysis [2]: if-else statements, recursive algorithms. COSC 2011, Winter 2004, Section N Instructor: N. Vlajic

STATISTICA Formula Guide: Logistic Regression. Table of Contents

Unit Storage Structures 1. Storage Structures. Unit 4.3

ECLT5810 E-Commerce Data Mining Technique SAS Enterprise Miner -- Regression Model I. Regression Node

Data Types. Abstract Data Types. ADTs as Design Tool. Abstract Data Types. Integer ADT. Principle of Abstraction

C++ Programming Language

Last not not Last Last Next! Next! Line Line Forms Forms Here Here Last In, First Out Last In, First Out not Last Next! Call stack: Worst line ever!

8.1. Example: Visualizing Data

Query Processing C H A P T E R12. Practice Exercises

BM307 File Organization

Curriculum Map. Discipline: Computer Science Course: C++

Rational Software. Getting Started with Rational Customer Service Online Case Management. Release 1.0

West Virginia University College of Engineering and Mineral Resources. Computer Engineering 313 Spring 2010

Binary Trees. Wellesley College CS230 Lecture 17 Thursday, April 5 Handout #28. PS4 due 1:30pm Tuesday, April

10CS35: Data Structures Using C

In This Issue: Excel Sorting with Text and Numbers

I PUC - Computer Science. Practical s Syllabus. Contents

Algorithms and Data Structures Exercise for the Final Exam (17 June 2014) Stack, Queue, Lists, Trees, Heap

Chapter 8: Bags and Sets

AP Computer Science Java Mr. Clausen Program 9A, 9B

Sample Questions Csci 1112 A. Bellaachia

COWLEY COLLEGE & Area Vocational Technical School

Lecture Notes on Binary Search Trees

Face detection is a process of localizing and extracting the face region from the

Why you shouldn't use set (and what you should use instead) Matt Austern

Decision Trees from large Databases: SLIQ

recursion, O(n), linked lists 6/14

MAT Program Verication: Exercises

MATLAB and Big Data: Illustrative Example

CS104: Data Structures and Object-Oriented Design (Fall 2013) October 24, 2013: Priority Queues Scribes: CS 104 Teaching Team

Computer Science 210: Data Structures. Searching

MEP Y9 Practice Book A

Input Output. 9.1 Why an IO Module is Needed? Chapter 9

GUJARAT TECHNOLOGICAL UNIVERSITY, AHMEDABAD, GUJARAT. Course Curriculum. DATA STRUCTURES (Code: )

Sequential Data Structures

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)

Krishna Institute of Engineering & Technology, Ghaziabad Department of Computer Application MCA-213 : DATA STRUCTURES USING C

MATROIDS AND MYSQL WHAT TO DO

Homework Assignment 7

Transcription:

Chapter 8: Searching and Sorting Arrays 8.1 Introduction to Search Algorithms Introduction to Search Algorithms Search: locate an item in a list of information Two algorithms we will examine: Linear search Binary search Linear Search Also called the sequential search Starting at the first element, this algorithm sequentially steps through an array examining each element until it locates the value it is searching for. Linear Search - Example Array numlist contains: 17 23 5 11 2 29 3 Searching for the the value 11, linear search examines 17, 23, 5, and 11 Searching for the the value 7, linear search examines 17, 23, 5, 11, 2, 29, and 3 Linear Search Algorithm: set found to false; set position to 1; set index to 0 while index < number of elts. and found is false if list[index] is equal to search value found = true position = index end if add 1 to index end while return position 1

A Linear Search Function int searchlist(int list[], int numelems, int value) int index = 0; // Used as a subscript to search array int position = -1; // To record position of search value bool found = false; // Flag to indicate if value was found while (index < numelems &&!found) if (list[index] == value) // If the value is found found = true; // Set the flag position = index; // Record the value's subscript index++; // Go to the next element return position; // Return the position, or -1 Linear Search - Tradeoffs Benefits: Easy algorithm to understand Array can be in any order Disadvantages: Inefficient (slow): for array of N elements, examines N/2 elements on average for value in array, N elements for value not in array Binary Search Requires array elements to be in order 1. Divides the array into three sections: middle element elements on one side of the middle element elements on the other side of the middle element 2. If the middle element is the correct value, done. Otherwise, go to step 1. using only the half of the array that may contain the correct value. 3. Continue steps 1. and 2. until either the value is found or there are no more elements to examine Binary Search - Example Array numlist2 contains: 2 3 5 11 17 23 29 Searching for the the value 11, binary search examines 11 and stops Searching for the the value 7, linear search examines 11, 3, 5, and stops Binary Search Set first index to 0. Set last index to the last subscript in the array. Set found to false. Set position to -1. While found is not true and first is less than or equal to last Set middle to the subscript half-way between array[first] and array[last]. If array[middle] equals the desired value Set found to true. Set position to middle. Else If array[middle] is greater than the desired value Set last to middle - 1. Else Set first to middle + 1. End If. End While. Return position. A Binary Search Function int binarysearch(int array[], int size, int value) int first = 0, // First array element last = size - 1, // Last array element middle, // Mid point of search position = -1; // Position of search value bool found = false; // Flag while (!found && first <= last) middle = (first + last) / 2; // Calculate mid point if (array[middle] == value) // If value is found at mid found = true; position = middle; else if (array[middle] > value) // If value is in lower half last = middle - 1; else first = middle + 1; // If value is in upper half return position; 2

Binary Search - Tradeoffs Benefits: Much more efficient than linear search. For array of N elements, performs at most log 2 N comparisons Disadvantages: Requires that array elements be sorted 8.3 Introduction to Sorting Algorithms Introduction to Sorting Algorithms Sort: arrange values into an order: Alphabetical Ascending numeric Descending numeric Two algorithms considered here: Bubble sort Selection sort Bubble Sort Concept: Compare 1 st two elements If out of order, exchange them to put in order Move down one element, compare 2 nd and 3 rd elements, exchange if necessary. Continue until end of array. Pass through array again, exchanging as necessary Repeat until pass made with no exchanges Example First Pass Example Second Pass Array numlist3 contains: 17 23 5 11 After first pass, array numlist3 contains: 17 5 11 23 compare values 17 and 23 in correct order, compare values 23 and 5 not in correct order, compare values 23 and 11 not in correct order, 5 not in correct order, 11 not in correct order, 23 in correct order, 3

Example Third Pass A Bubble Sort Function From Program 8-4 After second pass, array numlist3 contains: 5 11 17 23 compare values 5 and 11 in correct order, compare values 11 and 17 in correct order, 23 in correct order, No exchanges, so array is in order Bubble Sort - Tradeoffs Benefit: Easy to understand and implement Disadvantage: Inefficient: slow for large arrays Selection Sort Concept for sort in ascending order: Locate smallest element in array. Exchange it with element in position 0 Locate next smallest element in array. Exchange it with element in position 1. Continue until all elements are arranged in order Selection Sort - Example Array numlist contains: 11 2 29 3 1. Smallest element is 2. Exchange 2 with element in 1 st position in array: 2 11 29 3 Example (Continued) 2. Next smallest element is 3. Exchange 3 with element in 2 nd position in array: 2 3 29 11 3. Next smallest element is 11. Exchange 11 with element in 3 rd position in array: 2 3 11 29 4

A Selection Sort Function From Program 8-5 35 void selectionsort(int array[], int size) 36 37 int startscan, minindex, minvalue; 38 39 for (startscan = 0; startscan < (size - 1); startscan++) 40 41 minindex = startscan; 42 minvalue = array[startscan]; 43 for(int index = startscan + 1; index < size; index++) 44 45 if (array[index] < minvalue) 46 47 minvalue = array[index]; 48 minindex = index; 49 50 51 array[minindex] = array[startscan]; 52 array[startscan] = minvalue; 53 54 Selection Sort - Tradeoffs Benefit: More efficient than Bubble Sort, since fewer exchanges Disadvantage: May not be as easy as Bubble Sort to understand Sorting and Searching Vectors 8.5 Sorting and Searching Vectors Sorting and searching algorithms can be applied to vectors as well as arrays Need slight modifications to functions to use vector arguments: vector <type> & used in prototype No need to indicate vector size functions can use size member function to calculate 5