230 likes | 363 Views
COMP 14 Introduction to Programming. Miguel A. Otaduy June 4, 2004. Today. Review arrays Searching arrays for a particular value Sorting arrays. 0. 1. 2. 3. Exercises. 1. Find Sum and Average of Array 2. Determine Largest and Smallest Elements in Array. 0. 1. 2. 3. Example.
E N D
COMP 14Introduction to Programming Miguel A. Otaduy June 4, 2004
Today • Review arrays • Searching arrays for a particular value • Sorting arrays
0 1 2 3 Exercises 1. Find Sum and Average of Array 2. Determine Largest and SmallestElements in Array
0 1 2 3 Example Find Sum and Average of Array double[] sale={3.5, 4.6, 5.2, 3.8}; double sum = 0; double average;
0 1 2 3 Example Find Sum and Average of Array double[] sale={3.5, 4.6, 5.2, 3.8}; double sum = 0; for(int ind = 0; ind < sale.length; ind++) { sum = sum + sale[ind]; } double average; if(sale.length != 0) average = sum / sale.length; else average = 0.0;
0 1 2 3 Example Determining Largest/Smallest Element in Array double[] sale={3.5, 4.6, 5.2, 3.8}; int maxIndex = 0, minIndex = 0; double largestSale; double smallestSale;
0 1 2 3 Example Determining Largest/Smallest Element in Array double[] sale={3.5, 4.6, 5.2, 3.8}; int maxIndex = 0, minIndex = 0; for (int ind = 1; ind < sale.length; ind++) { if (sale[ind] > sale[maxIndex]) maxIndex = ind; else if (sale[ind] < sale[minIndex]) minIndex = ind; } double largestSale = sale[maxIndex]; double smallestSale = sale[minIndex];
Searching Arrays • Find one/several particular element(s) in an array of many elements • Complexity (How Long To Search?) • find a parking space - linear • look up a word in a dictionary - complex 500K+ words in Oxford Dictionary search - very complex over 3 trillion web pages
Time Complexity • Important feature in Computer Science research: • How long does an algorithm take to complete? • Given an input (e.g. an array) of size n, how long does it take for the algorithm (e.g. search for a particular value) to complete? • Linear algorithm: time = k1 * n • Quadratic algorithm: time = k2 * n2 • etc.
Linear Searching • Algorithm: • Get a test value and a list of values • list can be ordered or unordered • loop through the list • repeatedly ask: Is this a match? • quit when the answer is yes (use break stmt) • if you finish all items, there is no match • Inefficient • worst time to search is the length of the list • Relatively easy to program
0 1 2 3 Example Linear Search int[] list={3, 6, 27, 8, 33, 54, 23}; int foundAt = -1, element = 33;
0 1 2 3 Example Linear Search int[] list={3, 6, 27, 8, 33, 54, 23}; int foundAt = -1, element = 33; for(int i=0; i<list.length; i++) { if(list[i] == element) { foundAt = i; break; }}
Array of Objects • Declare array of Student objects (ref. variables) • Instantiate array of size 10 • Instantiate each of the Student objects • Ask for age (int) and name (String) • Instantiate object
0 1 2 3 Example Array of Student objects Student[] students; students = new Student[10]; for(int i = 1; i < students.length; i++) { //get int age //get String name students[i]=new Student(name, age); }
0 1 2 3 Example Search for student Mark int foundAt=-1; String name=“Mark”; for(int i = 1; i < students.length; i++) { if(students[i].getName().equals(name)) { fountAt=i; break; } }
Binary Search • Requires ordered (sorted) list • Set searchRange to the entire list • Repeat: • pick a “test value” in the middle of searchRange • if test value == value searching for • Stop! • if test value > value searching for • searchRange = lower half of searchRange • if test value < value searching for • searchRange = upper half of searchRange
Trial 1 2 4 5 12 16 19 22 26 29 32 37 41 46 50 2 4 5 12 16 19 22 26 29 32 37 41 46 50 Example Looking for 46 2 4 5 12 16 19 22 26 29 32 37 41 46 50 2 3
SortingSort students by birthdate • Get a group of 5 students • Another student will sort them by birth date • Analyze the sorting strategy • Can we devise an algorithm following that strategy? • Goal: sort following a methodology • We should be able to write it as an algorithm and then program it • Demonstrate selection sort • Write algorithm
Selection SortGeneral Algorithm • Scan the list to find the smallest value • Swap that value with the value in the first position in the list • Scan rest of list to find the next smallest value • Swap that value with the value in the second position in the list • And so on, until you get to the end of the list
Selection SortMethods • Scan the list to find the smallest value • Swap that value with the value in the first position in the list • Scan rest of list to find the next smallest value • Swap that value with the value in the second position in the list • And so on, until you get to the end of the list loop
Selection Sort • Sorts in ascending order • Can be changed to sort in descending order • look for max instead of min
Homework 6 • Read/write files • Array of ints • Array of Participant objects • Next: • Sort array of ints • Sort array of participants
Monday • Java applets • HTML • GUIs • Reading Assignment: • Chapter 6 (pp. 264-290) • skim Chapter 13 (pp. 725-806)