1 / 54

Arrays

Arrays. CSC 171 FALL 2001 LECTURE 10. 1937 - Alan Turing developed the idea of a "Universal Machine" capable of executing any describable algorithm, and forming the basis for the concept of "computability".

isha
Download Presentation

Arrays

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. Arrays CSC 171 FALL 2001 LECTURE 10

  2. 1937 - Alan Turing developed the idea of a "Universal Machine" capable of executing any describable algorithm, and forming the basis for the concept of "computability". Turing's ideas differed from those of others who were solving arithmetic problems by introducing the concept of "symbol processing". History: Alan Turing Founder of Computer Science

  3. The Turing Machine Tape memory (movable) a b c a a b b c a Read head q0 h q1 q3 q2 State machine

  4. The Turing Machine • A Turing machine is a quintuple (K,S,d,s,H) • K is a finite set of states • S is an alphabet of symbols • s is the initial state • H is the halting state • d is the transition function • From (K-H) x S • To K x (S U {move_tape_left, move_tape_right})

  5. The Turing Test • Turing put forward the idea of an 'imitation game', in which a human being and a computer would be interrogated under conditions where the interrogator would not know which was which, the communication being entirely by textual messages. • Turing argued that if the interrogator could not distinguish them by questioning, then it would be unreasonable not to call the computer intelligent. • Turing's 'imitation game' is now usually called 'the Turing test' for intelligence.

  6. Arrays • Suppose we want to write a program that reads a set of test grades and prints them, marking the highest grade? 65.2 81.7 31.3 95.4 < - highest grade 76.1 58.6

  7. Individual data items • If we knew that there were always 150 students in the class, we could store the data as individual variables • score1,score2,score3, . . , score150 • What would the data entry code look like? • What would the printing code look like? • How about finding the max?

  8. Arrays • An array is a collection of data items of the same type • Every element of the collection can be accessed separately.

  9. Constructing Arrays double [] data = new double[10];

  10. Setting Array values • To get values into an array you need to specify which slot you want to use. • Specification is done with the [ ] operator • The [ ] operator follows the name of the array • The [ ] operator encloses and integer-valued expression called the index or subscript

  11. Setting array values data[4] = 29.95;

  12. Using array values • Similar to setting int i = 4 ; System.out.println(“data[“+i+”] ==“+ data[i]); > data[4] ==29.95

  13. Array data items • Suppose we want to write a program that reads a set of test grades and prints them, marking the highest grade? • What would the data entry code look like? • What would the printing code look like? • How about finding the max?

  14. Array issues • Does it work? double [] data = new double[10]; data[10] = 5.4;

  15. Array issues • Does it work? double [] data = new double[10]; data[10] = 5.4; When the program runs, an out-of-bounds subscript generates an exception and terminates the program – why?

  16. Array issues • Can we search for the top grade as follows double maxScore = data[0]; for (int i = 1;I<=data.length;i++) If (data[i] > maxScore) maxScore = data[i];

  17. Array issues • An array of length n has index values from 0 to (n-1) double maxScore = data[0]; for (int i = 1;I<data.length;i++) If (data[i] > maxScore) maxScore = data[i];

  18. Array issues • Does it work? public static void main(String[] args){ double[] data; If (data[0] > 4.0) System.out.println(“GT 4!”); }

  19. Array issues • Arrays must be allocated! public static void main(String[] args){ double[] data = new double[10]; If (data[0] > 4.0) System.out.println(“GT 4!”); }

  20. Array issues • Arrays can be initialized! public static void main(String[] args){ double[] data = {2,3,4,5,6}; If (data[0] > 4.0) System.out.println(“GT 4!”); } // note: new int[] {2,3,4,5,6} ; is also legal

  21. Copying Arrays Is this ok? double [] data = new double[10]; double[] testScores; testScores = data;

  22. Copying Arrays Is this ok? double [] data = new double[10]; double[] testScores; testScores = data; How many arrays are there?

  23. Copying Array REFERENCES double [] data = new double[10]; double[] testScores; testScores = data;

  24. Copying Arrays • So, what if we want to make two “real” copies – what does the code look like? • Write a method so that int[] x = {3,4,5,6,7,8,9,10}; int[] y = myCopy(x);

  25. Copying public static int[] myCopy(int[] x){ int[] r_arry = new int[x.length]; for (int i = 0 ; i< x.length;i++) r_arry[i] = x[i]; return r_arry; }

  26. System.arrayCopy //System.arraycopy(from,fromstart,to,toStart,count); System.arraycopy(data,0,prices,0,data.length);

  27. 1940 A major need for supporting the war effort was to decrypt the intercepted messages of the German forces. Encrypted in the early years using the US designed ENIGMA, a team at Bletchley Park, built a series of machines culminating in 1943 with Colossus. History: Colossus Bletchley Park

  28. More Arrays • Suppose we want to write a program that reads a set of test product names, prices, and quality scores prints them, marking the best value? (score/prices) Digital 500X, $3499.00, score 73 ZEOS Pentium-III/500, $2545.00, score 70 Micro Express MF, $2195.00, score 72 < - best value Polywell Poly 450IP, $2099.00, score 30

  29. Parallel Arrays • One solution, can you think of a better one?

  30. Arrays of Objects • Easier to deal with - arrays hold references

  31. Multidimensional Arrays • Arrays of arrays • Arrays are objects • Arrays hold references to objects • Ergo, arrays can hold arrays

  32. Tables are 2D arrays // how easy to modify code ???? int[][] mtable = new int[5][5]; for(i=0;i<5;i++) • for(int j=0;j<5;j++) mtable[i][j] = (i+1)*(j+1); int size = 5; int[][] mtable = new int[size][size]; for(i=0;i<size;i++) for(int j=0;j<size;j++) mtable[i][j] = (i+1)*(j+1);

  33. Arrays of Arrays int [][] powers = new int[10][10];

  34. Allocating arrays of arrays int size = 10; int[][] mtable = new int[size][]; for(i=0;i<mtable.length;i++) { mtable[i]= new int[size]; for(int j=0;j<mtable[i].length;j++) mtable[i][j] = (i+1)*(j+1); }

  35. Alternately • The following is legal. • What is the structure? int[][] b = new int[5][]; for (int i=0;i<b.length;i++) b[i] = new int[i+1];

  36. Alternately int[][] b = new int[5][]; for (int i=0;i<b.length;i++) b[i] = new int[i+1]; This is known as a triangular array Is b[3][1] a legal reference or b[1][3]?

  37. Passing Arrays • In JAVA • Primitives are passed by value • A copy of the variable is made & used • Modifications made do not affect calling value • public void myAdd(int x) { x++;} • Objects are passed by reference • Since the reference is passed it is possible to change the value in the calling method • Public void myAdd (int[] x) {x[0]++;}

  38. Pass by value public class passArry { public static void main(String args[]){ int x1 = 3; System.out.println("x1 == "+x1); myAdd(x1); System.out.println("x1 == "+x1); } public static void myAdd(int x) {x++;} }

  39. Pass by reference public class passArry { public static void main(String args[]){ int[] x2 = {4,5,6}; System.out.println("x2[0] == "+x2[0]); myAdd(x2); System.out.println("x2[0] == "+x2[0]); } public static void myAdd(int[] x) {x[0]++;} }

  40. Exercise • Write a method that takes an integer array and prints the values

  41. Exercise • Write a method that takes an integer array and prints the values public static int myPrint(int[] x){ for (int i = 0 ; i<x.length;i++) System.out.println(x + “[“+i+”] == “+ x[i]); }

  42. Exercise • Write a method that takes an integer array, and two integer indices and swaps the value

  43. Exercise Write a method that takes an integer array, and two integer indices and swaps the value public static void mySwap(int[] x, int i, int j){ int temp = x[i]; x[i] = x[j]; x[j] = temp; }

  44. Exercise • Write a method that takes an integer array and returns the index of the maximum value

  45. Exercise • Write a method that takes an integer array and returns the index of the maximum value public static int myMax(int[] x){ int rvalue = 0; for (int i = 0 ; i<x.length;i++) if (x[i] > x[rvalue]) rvalue = i; return rvalue; }

  46. Exercise • Overload the max finder to take an array and an index – the method now returns the index of the maximum value >= the index passed in

  47. Exercise • Overload the max finder to take an array and an index – the method now returns the index of the maximum value >= the index passed in public static int myMax(int[] x, int j){ int rvalue = j; for (int i = j ; i<x.length;i++) if (x[i] > x[rvalue]) rvalue = i; return rvalue; }

  48. Sorting • Write a method that takes an integer array • Loop through all the positions in the array, one after the other • At each (current) position, find the max from that position to the rest of the array. • Swap the value with the current position • This is termed selection sort

More Related