1 / 60

C++ Programming: From Problem Analysis to Program Design, Fifth Edition

C++ Programming: From Problem Analysis to Program Design, Fifth Edition. Chapter 10: Applications of Arrays and the class vector. Objectives. In this chapter, you will:

michon
Download Presentation

C++ Programming: From Problem Analysis to Program Design, Fifth Edition

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C++ Programming: From Problem Analysis to Program Design, Fifth Edition Chapter 10: Applications of Arrays and the class vector

  2. Objectives In this chapter, you will: • Explore how to sort an array using the bubble sort, selection sort, and insertion sort algorithms • Learn how to implement the binary search algorithm • Become familiar with the vector type C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  3. List Processing • List: a collection of values of the same type • Basic list operations: • Search the list for a given item • Sort the list • Insert an item in the list • Delete an item from the list • Print the list C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  4. Searching • Sequential search algorithm C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  5. Searching (cont'd.) • List with 1000 elements • Search item is the second item • Sequential search makes two key comparisons • Search item is the 900th item • Sequential search makes 900 key comparisons • Search item is not in the list • Sequential search makes 1000 key comparisons C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  6. Searching (cont'd.) • Sequential search • Not very efficient for large lists • On average, number of key comparisons equal to half the size of the list • Does not assume that the list is sorted C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  7. Bubble Sort • list[0]...list[n - 1] • List of n elements, indexed 0 to n - 1 C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  8. Bubble Sort (cont'd.) • Series of n - 1 iterations • Successive elements list[index] and list[index + 1] of list are compared • If list[index]>list[index + 1] • Elements list[index] and list[index + 1] are swapped • Smaller elements move toward the top • Larger elements move toward the bottom C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  9. Bubble Sort (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  10. Bubble Sort (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  11. Bubble Sort (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  12. Bubble Sort (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  13. Bubble Sort (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  14. Bubble Sort (cont'd.) • List of length n • Exactly n(n - 1) / 2 key comparisons • On average n(n - 1) / 4 item assignments • n = 1000 • 500,000 key comparisons • 250,000 item assignments C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  15. Selection Sort • Rearrange the list by selecting an element in the list and moving it to its proper position • Finds the location of the smallest element in the unsorted portion of the list • Moves it to the top of the unsorted portion of the list C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  16. Selection Sort (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  17. Selection Sort (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  18. Selection Sort (cont'd.) • In the unsorted portion of the list: • Find the location of the smallest element • Move the smallest element to the beginning of the unsorted list C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  19. Selection Sort (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  20. Selection Sort (cont'd.) • List of length n • Exactly n(n - 1) / 2key comparisons • 3(n - 1) item assignments • n = 1000 • 500,000 key comparisons • 3000 item assignments C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  21. Insertion Sort • Sorts the list by moving each element to its proper place C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  22. Insertion Sort (cont'd.) • Consider the element list[4] • First element of unsorted list • list[4] < list[3] • Move list[4] to proper location • At list[2] C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  23. Insertion Sort (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  24. Insertion Sort (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  25. Insertion Sort (cont'd.) • During the sorting phase • Array containing the list is divided into two sublists: sorted and unsorted C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  26. Insertion Sort (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  27. Insertion Sort (cont'd.) • List of length n • About (n2 + 3n – 4) / 4 key comparisons • About n(n – 1) / 4 item assignments • n = 1000 • 250,000 key comparisons • 250,000 item assignments C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  28. Binary Search • Much faster than a sequential search • List must be sorted • “Divide and conquer” • Compare search item with middle element • Less than middle: search only upper half of list • More than middle: search only lower half of list C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  29. Binary Search (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  30. Binary Search (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  31. Binary Search (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  32. Performance of Binary Search • L is a sorted list of size 1024 • Every iteration of the while loop cuts the size of the search list by half • At most, 11 iterations to determine whether x is in L • Binary search will make 22 comparisons at most • L has1048576 elements • Binary search makes 42 item comparisons at most C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  33. Performance of Binary Search (cont'd.) • List of length n • Maximum number comparisons 2log2n + 2 C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  34. vector type (class) • Only a fixed number of elements can be stored in an array • Inserting and removing elements causes shifting • vector type implements a list • vector container • vector • vector object • object C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  35. vector type (class) (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  36. vector type (class) (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  37. vector type (class) (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  38. vector type (class) (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  39. Programming Example: Election Results • Presidential election for the student council of your local university • Write a program to analyze the data and report the winner • Four major divisions labeled as Region 1, Region 2, Region 3, and Region 4 • Each division has several department • Each department manages its own voting process and directly reports the results to the election committee C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  40. Programming Example: Election Results (cont'd.) • Desired output: • Voting is reported in the following form: C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  41. Programming Example: Election Results (cont'd.) • Assume that six candidates are running • Program can be modified to accommodate any number of candidates • Data is provided in two files: • candData.txt consists of the names of candidates • voteData.txt each line consists of voting results • One entry per line C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  42. Programming Example: Input and Output • Input: Two files, one containing the candidates’ names and the other containing the voting data • Output: election results in a tabular form and the winner C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  43. Programming Example: Problem Analysis • Program must organize the voting data by region • Program must calculate total number of votes received by each candidate as well as the total votes cast in the election • Names of the candidates must appear in alphabetical order C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  44. Programming Example: Problem Analysis (cont'd.) • Data type of a candidate’s name and number of votes are different • Separate arrays • Use a two-dimensional array to hold the next four columns of the output • One-dimensional array to hold the total votes received by each candidate C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  45. Programming Example: Problem Analysis (cont'd.) C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  46. Programming Example: Algorithm Design • Read the candidates’ names into the array candidatesName • Sort the array candidatesName • Initialize the arrays votesByRegion and totalVotes • Process the voting data • Calculate the total votes received by each candidate • Output the results C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  47. Programming Example: Function getCandidatesName() C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  48. Programming Example: Function sortCandidateName() C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  49. Programming Example: Function initialize() C++ Programming: From Problem Analysis to Program Design, Fifth Edition

  50. Programming Example: Process Voting Data • Get a candidateName, regionNumber, and numberOfVotesForTheCandidate • Find the row number in the array candidatesName that corresponds to this candidate • This gives the corresponding row number in the array votesByRegion for this candidate • Find the column in the array votesByRegion that corresponds to the regionNumber C++ Programming: From Problem Analysis to Program Design, Fifth Edition

More Related