2008/12/03: Lecture 20 CMSC 104, Section 0101 John Y. Park

Slides:



Advertisements
Similar presentations
Lesson 8 Searching and Sorting Arrays 1CS 1 Lesson 8 -- John Cole.
Advertisements

Garfield AP Computer Science
Data Structures Data Structures Topic #13. Today’s Agenda Sorting Algorithms: Recursive –mergesort –quicksort As we learn about each sorting algorithm,
Sorting Chapter Sorting Consider list x 1, x 2, x 3, … x n We seek to arrange the elements of the list in order –Ascending or descending Some O(n.
CS203 Programming with Data Structures Sorting California State University, Los Angeles.
Searching and Sorting Topics  Sequential Search on an Unordered File  Sequential Search on an Ordered File  Binary Search  Bubble Sort  Insertion.
Algorithm Efficiency and Sorting
Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 9 Searching.
Simple Sort Algorithms Selection Sort Bubble Sort Insertion Sort.
Searching and Sorting Topics Sequential Search on an Unordered File
CHAPTER 09 Compiled by: Dr. Mohammad Omar Alhawarat Sorting & Searching.
SEARCHING UNIT II. Divide and Conquer The most well known algorithm design strategy: 1. Divide instance of problem into two or more smaller instances.
Computer Science Searching & Sorting.
C++ Programming: From Problem Analysis to Program Design, Second Edition Chapter 19: Searching and Sorting.
CSC 211 Data Structures Lecture 13
CS 361 – Chapters 8-9 Sorting algorithms –Selection, insertion, bubble, “swap” –Merge, quick, stooge –Counting, bucket, radix How to select the n-th largest/smallest.
Review 1 Arrays & Strings Array Array Elements Accessing array elements Declaring an array Initializing an array Two-dimensional Array Array of Structure.
Sorting and Searching. Selection Sort  “Search-and-Swap” algorithm 1) Find the smallest element in the array and exchange it with a[0], the first element.
Sorting.
Chapter 9 Sorting. The efficiency of data handling can often be increased if the data are sorted according to some criteria of order. The first step is.
Data Structures - CSCI 102 Selection Sort Keep the list separated into sorted and unsorted sections Start by finding the minimum & put it at the front.
Searching and Sorting Searching: Sequential, Binary Sorting: Selection, Insertion, Shell.
Course Code #IDCGRF001-A 5.1: Searching and sorting concepts Programming Techniques.
Searching Topics Sequential Search Binary Search.
Computer Science 1620 Sorting. cases exist where we would like our data to be in ascending (descending order) binary searching printing purposes selection.
PREVIOUS SORTING ALGORITHMS  BUBBLE SORT –Time Complexity: O(n 2 ) For each item, make (n –1) comparisons Gives: Comparisons = (n –1) + (n – 2)
Chapter 9: Sorting1 Sorting & Searching Ch. # 9. Chapter 9: Sorting2 Chapter Outline  What is sorting and complexity of sorting  Different types of.
Winter 2016CISC101 - Prof. McLeod1 CISC101 Reminders Assignment 5 is posted. Exercise 8 is very similar to what you will be doing with assignment 5. Exam.
CMSC 104, Version 8/061L24Searching&Sorting.ppt Searching and Sorting Topics Sequential Search on an Unordered File Sequential Search on an Ordered File.
Priority Queues and Heaps. John Edgar  Define the ADT priority queue  Define the partially ordered property  Define a heap  Implement a heap using.
Copyright Prentice Hall Modified by Sana odeh, NYU
Searching and Sorting Searching algorithms with simple arrays
Prof. U V THETE Dept. of Computer Science YMA
Subject Name: Design and Analysis of Algorithm Subject Code: 10CS43
CSCI 104 Sorting Algorithms
Introduction to Search Algorithms
Sorting by Tammy Bailey
Quicksort
COMP 103 SORTING Lindsay Groves 2016-T2 Lecture 26
Quick-Sort 9/13/2018 1:15 AM Quick-Sort     2
Chapter 7 Sorting Spring 14
Quicksort "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.
Data Structures and Algorithms
Description Given a linear collection of items x1, x2, x3,….,xn
Quicksort 1.
Intro to Computer Science CS1510 Dr. Sarah Diesburg
Intro to Computer Science CS1510 Dr. Sarah Diesburg
Winter 2018 CISC101 11/19/2018 CISC101 Reminders
Searching and Sorting Topics Sequential Search on an Unordered File
ITEC 2620M Introduction to Data Structures
Searching and Sorting Topics Sequential Search on an Unordered File
Manipulating lists of data
8/04/2009 Many thanks to David Sun for some of the included slides!
UMBC CMSC 104 – Section 01, Fall 2016
Search,Sort,Recursion.
Searching and Sorting Topics Sequential Search on an Unordered File
Manipulating lists of data
Sub-Quadratic Sorting Algorithms
Simple Sorting Methods: Bubble, Selection, Insertion, Shell
Searching and Sorting Arrays
Quicksort.
Search,Sort,Recursion.
Ch. 2: Getting Started.
Intro to Computer Science CS1510 Dr. Sarah Diesburg
Quicksort.
Module 8 – Searching & Sorting Algorithms
Quicksort.
Data Structures and Algorithms CS 244
Presentation transcript:

2008/12/03: Lecture 20 CMSC 104, Section 0101 John Y. Park Searching and Sorting 2008/12/03: Lecture 20 CMSC 104, Section 0101 John Y. Park [Based on dblock spr’06lecture, slightly modified]

Searching and Sorting Topics Algorithms and Reusability Algorithmic Classes: Example 1--Search Algorithmic Classes: Example 2--Sorting Reading Sections 6.6 - 6.8

Searching and Sorting Topics Algorithms and Reusability Algorithmic Classes: Example 1--Search Algorithmic Classes: Example 2--Sorting Reading Sections 6.6 - 6.8

Common Problems/ Common Solutions When writing most interesting programs, there is often a core algorithmic challenge Many different problem domains actually have similar underlying solutions Abstraction is the key to reuse E.g.: textual search identifying genetic patterns Reuse has important benefits Saves work Increases reliability Donald Knuth’s The Art of Computer Programming The “bible” of programming

Common Problems/ Common Solutions (cont.) There are some very common problems that we use computers to solve: Searching through a lot of records for a specific record or set of records Placing records in order, which we call sorting There are numerous algorithms to perform searches and sorts. Knuth dedicates 800(!) pages to the subject: Vol. 3: Sorting and Searching We will briefly explore a few common ones.

Searching and Sorting Topics Algorithms and Reusability Algorithmic Classes: Example 1--Search Sequential Search on an Unordered File Sequential Search on an Ordered File Binary Search Algorithmic Classes: Example 2--Sorting

Searching A question you should always ask when selecting a search algorithm: “How fast does the search have to be?” In general, the faster the algorithm is, the more complex it is. Bottom line: you don’t always need to use, nor should you use, the “fastest” algorithm. Let’s explore two sample search algorithms, keeping speed in mind. Sequential (linear) search Binary search

Sequential Search on an Unordered File Basic algorithm: Get the search criterion (the key) Get the first record from the file While ( (record != key) and (still more records) ) Get the next record End_while When do we know that there wasn’t a record in the file that matched the key?

Sequential Search on an Ordered File Basic algorithm: Get the search criterion (the key) Get the first record from the file While ( (record < key) and (still more records) ) Get the next record End_while If ( record = key ) Then success Else there is no match in the file End_else When do we know that there wasn’t a record in the file that matched the key?

Sequential Search of Unordered vs. Ordered List Let’s do a comparison. If the order was ascending alphabetical on customer’s last names, how would the search for John Adams on the unordered list compare with the search on the ordered list? Unordered list if John Adams was in the list? if John Adams was not in the list? Ordered list

Unordered vs Ordered (con’t) How about George Washington? Unordered if George Washington was in the list? If George Washington was not in the list? Ordered How about James Madison?

Unordered vs. Ordered (con’t) Observation: the search is faster on an ordered list only when the item being searched for is not in the list. (But didn’t we find “Adams” more quickly in ordered?...) Also, keep in mind that the list has to first be placed in order for the ordered search. Conclusion: the efficiency of these algorithms is roughly the same. So, if we need a faster search, we need a completely different algorithm. How else could we search an ordered file?

Binary Search If we have an ordered list and we know how many things are in the list (i.e., number of records in a file), we can use a different strategy. The binary search gets its name because the algorithm continually divides the list into two parts.

How a Binary Search Works Always look at the center value. Each time you get to discard half of the remaining list. Is this fast ?

How Fast is a Binary Search? Worst case: 11 items in the list took 4 tries How about the worst case for a list with 32 items ? 1st try - list has 16 items 2nd try - list has 8 items 3rd try - list has 4 items 4th try - list has 2 items 5th try - list has 1 item

How Fast is a Binary Search? (con’t) List has 250 items 1st try - 125 items 2nd try - 63 items 3rd try - 32 items 4th try - 16 items 5th try - 8 items 6th try - 4 items 7th try - 2 items 8th try - 1 item List has 512 items 1st try - 256 items 2nd try - 128 items 3rd try - 64 items 4th try - 32 items 5th try - 16 items 6th try - 8 items 7th try - 4 items 8th try - 2 items 9th try - 1 item

What’s the Pattern? List of 11 took 4 tries List of 32 took 5 tries 32 = 25 and 512 = 29 8 < 11 < 16 23 < 11 < 24 128 < 250 < 256 27 < 250 < 28

A Very Fast Algorithm! How long (worst case) will it take to find an item in a list 30,000 items long? 210 = 1024 213 = 8192 211 = 2048 214 = 16384 212 = 4096 215 = 32768 So, it will take only 15 tries!

Lg n Efficiency We say that the binary search algorithm runs in log2 n time. (Also written as lg n) Lg n means the log to the base 2 of some value of n. 8 = 23 lg 8 = 3 16 = 24 lg 16 = 4 There are no algorithms that run faster than lg n time.

Sorting--Motivation So, the binary search is a very fast search algorithm. But, the list has to be sorted before we can search it with binary search. To be really efficient, we also need a fast sort algorithm.

Searching and Sorting Topics Algorithms and Reusability Algorithmic Classes: Example 1--Search Algorithmic Classes: Example 2--Sorting Bubble Sort Insertion Sort

Common Sort Algorithms Bubble Sort Heap Sort Selection Sort Merge Sort Insertion Sort Quick Sort There are many known sorting algorithms. Bubble sort is the slowest, running in n2 time. Quick sort is the fastest, running in n·lg n time. As with searching, the faster the sorting algorithm, the more complex it tends to be. We will examine two sorting algorithms: Bubble sort Insertion sort

Bubble Sort - Let’s Do One! C P G A T O B Sorting Demos

Bubble Sort Code void bubbleSort (int a[ ] , int size) { int i, j, temp; for ( i = 0; i < size; i++ ) /* controls passes through the list */ for ( j = 0; j < size - 1; j++ ) /* performs adjacent comparisons */ if ( a[ j ] > a[ j+1 ] ) /* determines if a swap should occur */ temp = a[ j ]; /* swap is performed */ a[ j ] = a[ j + 1 ]; a[ j+1 ] = temp; }

Bubble Sort--Optimizations Can you think of quick-and-dirty tweaks to the code to: Trim the inner loop to fewer turns? Stop the outer loop early in opportune cases?

Insertion Sort Insertion sort is slower than quicksort, but not as slow as bubble sort, and it is easy to understand. Insertion sort works the same way as arranging your hand when playing cards. Out of the pile of unsorted cards that were dealt to you, you pick up a card and place it in your hand in the correct position relative to the cards you’re already holding.

Arranging Your Hand 7 5 7

Arranging Your Hand 5 7 5 6 7 5 6 7 K 5 6 7 8 K

Insertion Sort Unsorted - shaded Look at 2nd item - 5. Compare 5 to 7. 5 is smaller, so move 5 to temp, leaving an empty slot in position 2. Move 7 into the empty slot, leaving position 1 open. Move 5 into the open position. 7 K 1 7 5 v 7 5 7 > 2 5 7 3 <

Insertion Sort (con’t) Look at next item - 6. Compare to 1st - 5. 6 is larger, so leave 5. Compare to next - 7. 6 is smaller, so move 6 to temp, leaving an empty slot. Move 7 into the empty slot, leaving position 2 open. Move 6 to the open 2nd position. 5 7 6 K 1 5 7 v 5 7 6 5 7 > 2 5 6 7 3 <

Insertion Sort (con’t) Look at next item - King. Compare to 1st - 5. King is larger, so leave 5 where it is. Compare to next - 6. King is larger, so leave 6 where it is. Compare to next - 7. King is larger, so leave 7 where it is. 5 6 7 K

Insertion Sort (con’t) 5 6 7 K 8 1 5 6 7 K 8 v 5 6 7 K 8 5 6 7 K > 2 5 6 7 8 K 3 <

Quicksort Fastest general sort known (so far) Basic premise: Pick random item (usually middle slot) Rearrange list to move lower items to top, higher items to bottom Recurse (fancy CS term) on the upper and lower subsets

How to Pick an Algorithm? Order of complexity is an important consideration Average-case and “worst-case performance There is rarely a “best” algorithm – just often “better ones” Will frequently start from some standard algorithm and (hopefully) improve Understanding the details of an algorithm’s behavior is critical to success

[Administrative Stuff] Complete SCEQs and blue questionnaires