Programming Logic and Design Eighth Edition Chapter 8 Advanced Data Handling Concepts
Objectives In this chapter, you will learn about: • The need for sorting data • The bubble sort algorithm • Sorting multifield records • The insertion sort algorithm • Multidimensional arrays • Indexed files and linked lists 2Programming Logic and Design, Eighth Edition
Understanding the Need for Sorting Data • Sequential order – Placed in order based on the value of some field • Alphabetical or numerical – Ascending order (arranging records from A to Z or lowest to highest) – Descending order (arranging records from Z to A or highest to lowest) 3Programming Logic and Design, Eighth Edition
Understanding the Need for Sorting Data (continued) • When computers sort data – Always use numeric values when making comparisons between values – Letters are translated into numbers using coding schemes such as ASCII, Unicode, or EBCDIC • “B” is numerically one greater than “A” • “y” is numerically one less than “z” – Whether “A” is represented by a number that is greater or smaller than the number representing “a” depends on your system 4Programming Logic and Design, Eighth Edition
Understanding the Need for Sorting Data (continued) • Professional programmers might never have to write a program that sorts data – Organizations can purchase prewritten sorting programs – Many popular language compilers come with built-in methods that can sort data for you • Beneficial to understand the sorting process 5Programming Logic and Design, Eighth Edition
Using the Bubble Sort Algorithm • Bubble sort – Items in a list are compared with each other in pairs – Items are then swapped based on which is larger or smaller – Sometimes called a sinking sort • Ascending sorts put the smaller item on top so the largest item sinks to the bottom • Descending sorts put the larger item on top so the smallest item sinks to the bottom – An algorithm contains instructions for swapping values 6Programming Logic and Design, Eighth Edition
Understanding Swapping Values 7Programming Logic and Design, Eighth Edition • To swap values stored in two variables: – Exchange their values – Set the first variable equal to the value of the second – Set the second variable equal to the value of the first • There is a trick to swapping any two values
Understanding Swapping Values (continued) • Example – num score1 = 90 – num score2 = 85 • This is what could go wrong – If you first assign score1 to score2 using a statement such as score2 = score1 – Both score1 and score2 hold 90, and the value 85 is lost • Must create a temporary variable to hold one of the scores – temp = score2 (temp and score2 both contain 85) – score2 = score1 (score2 contains 90) – score1 = temp (score1 contains 85) 8Programming Logic and Design, Eighth Edition
9 Figure 8-1 Program segment that swaps two values Programming Logic and Design, Eighth Edition Understanding Swapping Values (continued)
10 Figure 8-2 Mainline logic for program that accepts, sorts, and displays scores Programming Logic and Design, Eighth Edition Understanding the Bubble Sort
11 Figure 8-3 The fillArray() method Programming Logic and Design, Eighth Edition Understanding the Bubble Sort (continued)
12 Figure 8-4 The incomplete sortArray() method Programming Logic and Design, Eighth Edition Understanding the Bubble Sort (continued)
13 Figure 8-5 The swap() method Programming Logic and Design, Eighth Edition Understanding the Bubble Sort (continued)
• Initial list – score[0] = 90 – score[1] = 85 – score[2] = 65 – score[3] = 95 – score[4] = 75 14Programming Logic and Design, Eighth Edition • 85 and 90 are switched – score[0] = 85 – score[1] = 90 – score[2] = 65 – score[3] = 95 – score[4] = 75 • 90 and 65 are switched – score[0] = 85 – score[1] = 65 – score[2] = 90 – score[3] = 95 – score[4] = 75 • No change: 90 and 95 in order – score[0] = 85 – score[1] = 65 – score[2] = 90 – score[3] = 95 – score[4] = 75 Understanding the Bubble Sort (continued)
• 75 and 95 are switched – score[0] = 85 – score[1] = 65 – score[2] = 90 – score[3] = 75 – score[4] = 95 15Programming Logic and Design, Eighth Edition • Back to top: 65 and 85 switch – score[0] = 65 – score[1] = 85 – score[2] = 90 – score[3] = 75 – score[4] = 95 • No change: 90 and 75 in order – score[0] = 65 – score[1] = 85 – score[2] = 75 – score[3] = 90 – score[4] = 95 • 75 and 85 switch: sorted! – score[0] = 65 – score[1] = 75 – score[2] = 85 – score[3] = 90 – score[4] = 95 Understanding the Bubble Sort (continued)
16Programming Logic and Design, Eighth Edition Understanding the Bubble Sort (continued)
• Nested loops – Inner loop swaps out-of-order pairs – Outer loop goes through the list multiple times • General rules – Greatest number of pair comparisons is one less than the number of elements in the array – Number of times you need to process the list of values is one less than the number of elements in the array 17Programming Logic and Design, Eighth Edition Understanding the Bubble Sort (continued)
Sorting a List of Variable Size 18Programming Logic and Design, Eighth Edition • Might not know how many array elements will hold valid values • Keep track of the number of elements stored in an array – Store x in numberOfEls – Compute comparisons as numberOfEls - 1
19Programming Logic and Design, Eighth Edition Figure 8-8 Score-sorting application in which number of elements to sort can vary Sorting a List of Variable Size(continued)
Refining the Bubble Sort to Reduce Unnecessary Comparisons 20Programming Logic and Design, Eighth Edition • If you are performing an ascending sort – After you have made one pass through the list, the largest value is guaranteed to be in its correct final position • Compare every element pair in the list on every pass through the list – Comparing elements that are already guaranteed to be in their final correct position • On each pass through the array – Stop your pair comparisons one element sooner
Refining the Bubble Sort to Reduce Unnecessary Comparisons (continued) 21Programming Logic and Design, Eighth Edition • Create a new variable pairsToCompare – Set it equal to the value of numberOfEls – 1 – On each subsequent pass through the list, reduce pairsToCompare by 1
Refining the Bubble Sort to Reduce Unnecessary Comparisons (continued) 22Programming Logic and Design, Eighth Edition
Refining the Bubble Sort to Reduce Unnecessary Passes 23Programming Logic and Design, Eighth Edition • Create a new variable didSwap – Set it equal to the value of “No” – Each time the swap() module executes, change the value to ”Yes”
Sorting Multifield Records • Sorting data stored in parallel arrays – Each array must stay in sync 24Programming Logic and Design, Eighth Edition
Sorting Multifield Records (continued) 25Programming Logic and Design, Eighth Edition • Sorting records as a whole – Create groups called record structures or classes • Will be covered in detail in Chapters 10 and 11 class StudentRecord string name num score endClass – Defining a class allows you to sort by either name or score
Using the Insertion Sort Algorithm • Insertion sort – Data is examined and record is inserted into its proper place – All other records are moved down one slot Original Array First Pass Second Pass score[0] = 90 score[0] = 65 score[0] = 65 score[1] = 85 score[1] = 85 score[1] = 75 score[2] = 65 score[2] = 90 score[2] = 85 score[3] = 95 score[3] = 95 score[3] = 90 score[4] = 75 score[4] = 75 score[4] = 95 26Programming Logic and Design, Eighth Edition
Using the Insertion Sort Algorithm (continued) 27Programming Logic and Design, Eighth Edition
Using Multidimensional Arrays 28Programming Logic and Design, Eighth Edition • One-dimensional array – Single-dimensional array – Elements accessed using a single subscript • Data can be stored in a table that has just one dimension – Height • If you know the vertical position of a one-dimensional array’s element, you can find its value
Using Multidimensional Arrays (continued) 29Programming Logic and Design, Eighth Edition • Two-dimensional array – Contains two dimensions: height and width – Location of any element depends on two factors • Example – Apartment building with five floors – Each floor has studio apartments and one- and two- bedroom apartments – To determine a tenant’s rent, you need to know two pieces of information: • The floor • The number of bedrooms in the apartment
Using Multidimensional Arrays (continued) 30Programming Logic and Design, Eighth Edition Table 8-2 Rent schedule based on floor and number of bedrooms
Using Multidimensional Arrays (continued) 31Programming Logic and Design, Eighth Edition • Each element in a two-dimensional array requires two subscripts to reference it – Row and column – num RENT_BY_FLOOR_AND_BDRMS[5][3] = 0 1 2 0 350 390 435 1 400 440 480 2 475 530 575 3 600 650 700 4 1000 1075 1150
Using Multidimensional Arrays (continued) 32Programming Logic and Design, Eighth Edition • Declare a two-dimensional array – Type two sets of brackets after the array type and name – First square bracket holds the number of rows – Second square bracket holds the number of columns • Access a two-dimensional array value – First subscript represents the row – Second subscript represents the column – RENT_BY_FLOOR_AND_BDRMS[0][0] is 350
33Programming Logic and Design, Eighth Edition Figure 8-15 A program that determines rents
Using Multidimensional Arrays (continued) 34Programming Logic and Design, Eighth Edition • Three-dimensional arrays – Supported by many programming languages – Apartment building • Number of floors • Different numbers of bedrooms available in apartments on each floor • Building number • Examples – RENT_BY_3_FACTORS[floor][bedrooms] [building] – RENT_BY_3_FACTORS[0][1][2]
Using Multidimensional Arrays (continued) 35Programming Logic and Design, Eighth Edition Figure 8-16 Picturing a three-dimensional array
Using Indexed Files and Linked Lists 36Programming Logic and Design, Eighth Edition • Sorting large numbers of data records requires considerable time and computer memory – Usually more efficient to store and access records based on their logical order than to sort and access them in their physical order • Physical order – Refers to a “real” order for storage • Logical order – Virtual order based on any criterion you choose
Using Indexed Files and Linked Lists (continued) 37Programming Logic and Design, Eighth Edition • Common method of accessing records in logical order – Use an index – Identify a key field for each record • Key field – A field whose contents make the record unique among all records in a file – Example: a unique employee identification number
Using Indexed Files and Linked Lists (continued) 38Programming Logic and Design, Eighth Edition • Memory and storage locations have addresses – Every data record on a disk has a numeric address where it is stored • Index records – To store a list of key fields paired with the storage address for the corresponding data record • Use the index to find the records in order based on their addresses
Using Indexed Files and Linked Lists (continued) 39Programming Logic and Design, Eighth Edition • Store records on a random-access storage device – Records can be accessed in any order • Each record can be placed in any physical location on the disk – Use the index as you would use the index in the back of a book – Picture an index based on ID numbers • When a record is removed from an indexed file – It does not have to be physically removed – The reference can simply be deleted from the index
40Programming Logic and Design, Eighth Edition Figure 8-17 An index on a disk that associates ID numbers with disk addresses Using Indexed Files and Linked Lists (continued)
Using Linked Lists 41Programming Logic and Design, Eighth Edition • Linked list – Another way to access records in a desired order, even though they might not be physically stored in that order • Build linked list – Create one extra field in every record of stored data – Holds the physical address of the next logical record • Add a new record to a linked list – Search through the list for the correct logical location of the new record
Using Linked Lists (continued) 42Programming Logic and Design, Eighth Edition Table 8-3 Sample linked customer list
Using Linked Lists (continued) 43Programming Logic and Design, Eighth Edition • Remove records from a linked list – Records do not need to be physically deleted from the medium on which they are stored – Remove link field • More sophisticated linked lists store two additional fields with each record – Address of the next record – Address of the previous record – List can be accessed either forward or backward
Summary 44Programming Logic and Design, Eighth Edition • Sort data – Ascending order – Descending order • Bubble sort – Items in a list are compared with each other in pairs – When an item is out of order, it swaps values with the item based on which is larger or smaller • Two possible approaches – Place related items in parallel arrays – Sort records as a whole
Summary (continued) 45Programming Logic and Design, Eighth Edition • Insertion sort looks at each element one at a time – Insert tested record in place and move other records down • Two-dimensional arrays – Use two subscripts when you access an element in a two- dimensional array • Access data records in a logical order that differs from their physical order – Use an index or linked list

Programming Logic and Design: Working with Data

  • 1.
    Programming Logic andDesign Eighth Edition Chapter 8 Advanced Data Handling Concepts
  • 2.
    Objectives In this chapter,you will learn about: • The need for sorting data • The bubble sort algorithm • Sorting multifield records • The insertion sort algorithm • Multidimensional arrays • Indexed files and linked lists 2Programming Logic and Design, Eighth Edition
  • 3.
    Understanding the Needfor Sorting Data • Sequential order – Placed in order based on the value of some field • Alphabetical or numerical – Ascending order (arranging records from A to Z or lowest to highest) – Descending order (arranging records from Z to A or highest to lowest) 3Programming Logic and Design, Eighth Edition
  • 4.
    Understanding the Needfor Sorting Data (continued) • When computers sort data – Always use numeric values when making comparisons between values – Letters are translated into numbers using coding schemes such as ASCII, Unicode, or EBCDIC • “B” is numerically one greater than “A” • “y” is numerically one less than “z” – Whether “A” is represented by a number that is greater or smaller than the number representing “a” depends on your system 4Programming Logic and Design, Eighth Edition
  • 5.
    Understanding the Needfor Sorting Data (continued) • Professional programmers might never have to write a program that sorts data – Organizations can purchase prewritten sorting programs – Many popular language compilers come with built-in methods that can sort data for you • Beneficial to understand the sorting process 5Programming Logic and Design, Eighth Edition
  • 6.
    Using the BubbleSort Algorithm • Bubble sort – Items in a list are compared with each other in pairs – Items are then swapped based on which is larger or smaller – Sometimes called a sinking sort • Ascending sorts put the smaller item on top so the largest item sinks to the bottom • Descending sorts put the larger item on top so the smallest item sinks to the bottom – An algorithm contains instructions for swapping values 6Programming Logic and Design, Eighth Edition
  • 7.
    Understanding Swapping Values 7ProgrammingLogic and Design, Eighth Edition • To swap values stored in two variables: – Exchange their values – Set the first variable equal to the value of the second – Set the second variable equal to the value of the first • There is a trick to swapping any two values
  • 8.
    Understanding Swapping Values (continued) •Example – num score1 = 90 – num score2 = 85 • This is what could go wrong – If you first assign score1 to score2 using a statement such as score2 = score1 – Both score1 and score2 hold 90, and the value 85 is lost • Must create a temporary variable to hold one of the scores – temp = score2 (temp and score2 both contain 85) – score2 = score1 (score2 contains 90) – score1 = temp (score1 contains 85) 8Programming Logic and Design, Eighth Edition
  • 9.
    9 Figure 8-1 Programsegment that swaps two values Programming Logic and Design, Eighth Edition Understanding Swapping Values (continued)
  • 10.
    10 Figure 8-2 Mainlinelogic for program that accepts, sorts, and displays scores Programming Logic and Design, Eighth Edition Understanding the Bubble Sort
  • 11.
    11 Figure 8-3 ThefillArray() method Programming Logic and Design, Eighth Edition Understanding the Bubble Sort (continued)
  • 12.
    12 Figure 8-4 Theincomplete sortArray() method Programming Logic and Design, Eighth Edition Understanding the Bubble Sort (continued)
  • 13.
    13 Figure 8-5 Theswap() method Programming Logic and Design, Eighth Edition Understanding the Bubble Sort (continued)
  • 14.
    • Initial list –score[0] = 90 – score[1] = 85 – score[2] = 65 – score[3] = 95 – score[4] = 75 14Programming Logic and Design, Eighth Edition • 85 and 90 are switched – score[0] = 85 – score[1] = 90 – score[2] = 65 – score[3] = 95 – score[4] = 75 • 90 and 65 are switched – score[0] = 85 – score[1] = 65 – score[2] = 90 – score[3] = 95 – score[4] = 75 • No change: 90 and 95 in order – score[0] = 85 – score[1] = 65 – score[2] = 90 – score[3] = 95 – score[4] = 75 Understanding the Bubble Sort (continued)
  • 15.
    • 75 and95 are switched – score[0] = 85 – score[1] = 65 – score[2] = 90 – score[3] = 75 – score[4] = 95 15Programming Logic and Design, Eighth Edition • Back to top: 65 and 85 switch – score[0] = 65 – score[1] = 85 – score[2] = 90 – score[3] = 75 – score[4] = 95 • No change: 90 and 75 in order – score[0] = 65 – score[1] = 85 – score[2] = 75 – score[3] = 90 – score[4] = 95 • 75 and 85 switch: sorted! – score[0] = 65 – score[1] = 75 – score[2] = 85 – score[3] = 90 – score[4] = 95 Understanding the Bubble Sort (continued)
  • 16.
    16Programming Logic andDesign, Eighth Edition Understanding the Bubble Sort (continued)
  • 17.
    • Nested loops –Inner loop swaps out-of-order pairs – Outer loop goes through the list multiple times • General rules – Greatest number of pair comparisons is one less than the number of elements in the array – Number of times you need to process the list of values is one less than the number of elements in the array 17Programming Logic and Design, Eighth Edition Understanding the Bubble Sort (continued)
  • 18.
    Sorting a Listof Variable Size 18Programming Logic and Design, Eighth Edition • Might not know how many array elements will hold valid values • Keep track of the number of elements stored in an array – Store x in numberOfEls – Compute comparisons as numberOfEls - 1
  • 19.
    19Programming Logic andDesign, Eighth Edition Figure 8-8 Score-sorting application in which number of elements to sort can vary Sorting a List of Variable Size(continued)
  • 20.
    Refining the BubbleSort to Reduce Unnecessary Comparisons 20Programming Logic and Design, Eighth Edition • If you are performing an ascending sort – After you have made one pass through the list, the largest value is guaranteed to be in its correct final position • Compare every element pair in the list on every pass through the list – Comparing elements that are already guaranteed to be in their final correct position • On each pass through the array – Stop your pair comparisons one element sooner
  • 21.
    Refining the BubbleSort to Reduce Unnecessary Comparisons (continued) 21Programming Logic and Design, Eighth Edition • Create a new variable pairsToCompare – Set it equal to the value of numberOfEls – 1 – On each subsequent pass through the list, reduce pairsToCompare by 1
  • 22.
    Refining the Bubble Sortto Reduce Unnecessary Comparisons (continued) 22Programming Logic and Design, Eighth Edition
  • 23.
    Refining the Bubble Sortto Reduce Unnecessary Passes 23Programming Logic and Design, Eighth Edition • Create a new variable didSwap – Set it equal to the value of “No” – Each time the swap() module executes, change the value to ”Yes”
  • 24.
    Sorting Multifield Records •Sorting data stored in parallel arrays – Each array must stay in sync 24Programming Logic and Design, Eighth Edition
  • 25.
    Sorting Multifield Records(continued) 25Programming Logic and Design, Eighth Edition • Sorting records as a whole – Create groups called record structures or classes • Will be covered in detail in Chapters 10 and 11 class StudentRecord string name num score endClass – Defining a class allows you to sort by either name or score
  • 26.
    Using the InsertionSort Algorithm • Insertion sort – Data is examined and record is inserted into its proper place – All other records are moved down one slot Original Array First Pass Second Pass score[0] = 90 score[0] = 65 score[0] = 65 score[1] = 85 score[1] = 85 score[1] = 75 score[2] = 65 score[2] = 90 score[2] = 85 score[3] = 95 score[3] = 95 score[3] = 90 score[4] = 75 score[4] = 75 score[4] = 95 26Programming Logic and Design, Eighth Edition
  • 27.
    Using the Insertion Sort Algorithm(continued) 27Programming Logic and Design, Eighth Edition
  • 28.
    Using Multidimensional Arrays 28ProgrammingLogic and Design, Eighth Edition • One-dimensional array – Single-dimensional array – Elements accessed using a single subscript • Data can be stored in a table that has just one dimension – Height • If you know the vertical position of a one-dimensional array’s element, you can find its value
  • 29.
    Using Multidimensional Arrays(continued) 29Programming Logic and Design, Eighth Edition • Two-dimensional array – Contains two dimensions: height and width – Location of any element depends on two factors • Example – Apartment building with five floors – Each floor has studio apartments and one- and two- bedroom apartments – To determine a tenant’s rent, you need to know two pieces of information: • The floor • The number of bedrooms in the apartment
  • 30.
    Using Multidimensional Arrays(continued) 30Programming Logic and Design, Eighth Edition Table 8-2 Rent schedule based on floor and number of bedrooms
  • 31.
    Using Multidimensional Arrays(continued) 31Programming Logic and Design, Eighth Edition • Each element in a two-dimensional array requires two subscripts to reference it – Row and column – num RENT_BY_FLOOR_AND_BDRMS[5][3] = 0 1 2 0 350 390 435 1 400 440 480 2 475 530 575 3 600 650 700 4 1000 1075 1150
  • 32.
    Using Multidimensional Arrays(continued) 32Programming Logic and Design, Eighth Edition • Declare a two-dimensional array – Type two sets of brackets after the array type and name – First square bracket holds the number of rows – Second square bracket holds the number of columns • Access a two-dimensional array value – First subscript represents the row – Second subscript represents the column – RENT_BY_FLOOR_AND_BDRMS[0][0] is 350
  • 33.
    33Programming Logic andDesign, Eighth Edition Figure 8-15 A program that determines rents
  • 34.
    Using Multidimensional Arrays(continued) 34Programming Logic and Design, Eighth Edition • Three-dimensional arrays – Supported by many programming languages – Apartment building • Number of floors • Different numbers of bedrooms available in apartments on each floor • Building number • Examples – RENT_BY_3_FACTORS[floor][bedrooms] [building] – RENT_BY_3_FACTORS[0][1][2]
  • 35.
    Using Multidimensional Arrays(continued) 35Programming Logic and Design, Eighth Edition Figure 8-16 Picturing a three-dimensional array
  • 36.
    Using Indexed Filesand Linked Lists 36Programming Logic and Design, Eighth Edition • Sorting large numbers of data records requires considerable time and computer memory – Usually more efficient to store and access records based on their logical order than to sort and access them in their physical order • Physical order – Refers to a “real” order for storage • Logical order – Virtual order based on any criterion you choose
  • 37.
    Using Indexed Filesand Linked Lists (continued) 37Programming Logic and Design, Eighth Edition • Common method of accessing records in logical order – Use an index – Identify a key field for each record • Key field – A field whose contents make the record unique among all records in a file – Example: a unique employee identification number
  • 38.
    Using Indexed Filesand Linked Lists (continued) 38Programming Logic and Design, Eighth Edition • Memory and storage locations have addresses – Every data record on a disk has a numeric address where it is stored • Index records – To store a list of key fields paired with the storage address for the corresponding data record • Use the index to find the records in order based on their addresses
  • 39.
    Using Indexed Filesand Linked Lists (continued) 39Programming Logic and Design, Eighth Edition • Store records on a random-access storage device – Records can be accessed in any order • Each record can be placed in any physical location on the disk – Use the index as you would use the index in the back of a book – Picture an index based on ID numbers • When a record is removed from an indexed file – It does not have to be physically removed – The reference can simply be deleted from the index
  • 40.
    40Programming Logic andDesign, Eighth Edition Figure 8-17 An index on a disk that associates ID numbers with disk addresses Using Indexed Files and Linked Lists (continued)
  • 41.
    Using Linked Lists 41ProgrammingLogic and Design, Eighth Edition • Linked list – Another way to access records in a desired order, even though they might not be physically stored in that order • Build linked list – Create one extra field in every record of stored data – Holds the physical address of the next logical record • Add a new record to a linked list – Search through the list for the correct logical location of the new record
  • 42.
    Using Linked Lists(continued) 42Programming Logic and Design, Eighth Edition Table 8-3 Sample linked customer list
  • 43.
    Using Linked Lists(continued) 43Programming Logic and Design, Eighth Edition • Remove records from a linked list – Records do not need to be physically deleted from the medium on which they are stored – Remove link field • More sophisticated linked lists store two additional fields with each record – Address of the next record – Address of the previous record – List can be accessed either forward or backward
  • 44.
    Summary 44Programming Logic andDesign, Eighth Edition • Sort data – Ascending order – Descending order • Bubble sort – Items in a list are compared with each other in pairs – When an item is out of order, it swaps values with the item based on which is larger or smaller • Two possible approaches – Place related items in parallel arrays – Sort records as a whole
  • 45.
    Summary (continued) 45Programming Logicand Design, Eighth Edition • Insertion sort looks at each element one at a time – Insert tested record in place and move other records down • Two-dimensional arrays – Use two subscripts when you access an element in a two- dimensional array • Access data records in a logical order that differs from their physical order – Use an index or linked list