Arrays - PowerPoint PPT Presentation

About This Presentation
Title:

Arrays

Description:

Quiz About [Your topic] ... Arrays – PowerPoint PPT presentation

Number of Views:118
Avg rating:3.0/5.0
Slides: 76
Provided by: JimCo153
Category:

less

Transcript and Presenter's Notes

Title: Arrays


1
Arrays
2
Background
  • Programmer often need the ability to represent a
    group of values as a list
  • List may be one-dimensional or multidimensional
  • Java provides arrays and the collection classes
  • The Vector class is an example of a collection
    class
  • Consider arrays first

3
Basic terminology
  • List is composed of elements
  • Elements in a list have a common name
  • The list as a whole is referenced through the
    common name
  • List elements are of the same type the base
    type
  • Elements of a list are referenced by subscripting
    (indexing) the common name

4
Java array features
  • Subscripts are denoted as expressions within
    brackets
  • Base (element) type can be any type
  • Size of array can be specified at run time
  • This is different that pure C! (for the most
    part, at least)
  • Index type is integer and the index range must be
    0 ... n-1
  • Where n is the number of elements
  • Automatic bounds checking
  • Ensures any reference to an array element is
    valid
  • Data field length specifies the number of
    elements in the list
  • Array is an object
  • Has features common to all other objects

5
Array variable definition styles
  • Without initialization

int a int a
6
Array variable definition styles
  • With initialization

7
Example
  • Definitions
  • char c
  • int value new int10
  • Causes
  • Array object variable c is un-initialized
  • Array object variable v references a new ten
    element list of integers
  • Each of the integers is default initialized to 0

8
2004 IOCCC winners
  • 2004 winners
  • 2004 anonymous Rendering of a stroked font
  • 2004 arachnid Curses maze displayer/navigator
    with only line-of-sight visibility
  • 2004 burley A Poker game
  • 2004 gavare A ray tracer
  • 2004 gavin Mini-OS
  • 2004 hibachi A CGI capable HTTP server
  • 2004 hoyle Curses based polynomial graphing with
    auto-scale
  • 2004 jdalbec Conway's look'n'say sequence
    split into elements
  • 2004 kopczynski OCR of 8, 9, 10 and 11
  • 2004 newbern Renders arbitary bitmapped fonts
  • 2004 omoikane A CRC inserter
  • 2004 schnitzi Editor animation
  • 2004 sds Space/tab/linefeed steganography
  • 2004 vik1 X Windows car racing game
  • 2004 vik2 Calculates prime numbers using
    only CPP
  • At http//www1.us.ioccc.org/years.html2004

9
Consider
  • int v new int10
  • int i 7
  • int j 2
  • int k 4
  • v0 1
  • vi 5
  • vj vi 3
  • vj1 vi v0
  • vvj 12
  • System.out.println(v2)
  • vk stdin.nextInt()

10
Consider
  • int v new int10
  • int i 7
  • int j 2
  • int k 4
  • v0 1
  • vi 5
  • vj vi 3
  • vj1 vi v0
  • vvj 12
  • System.out.println(v2)
  • vk stdin.nextInt()

11
Consider
  • int v new int10
  • int i 7
  • int j 2
  • int k 4
  • v0 1
  • vi 5
  • vj vi 3
  • vj1 vi v0
  • vvj 12
  • System.out.println(v2)
  • vk stdin.nextInt()

12
Consider
  • int v new int10
  • int i 7
  • int j 2
  • int k 4
  • v0 1
  • vi 5
  • vj vi 3
  • vj1 vi v0
  • vvj 12
  • System.out.println(v2)
  • vk stdin.nextInt()

13
Consider
  • int v new int10
  • int i 7
  • int j 2
  • int k 4
  • v0 1
  • vi 5
  • vj vi 3
  • vj1 vi v0
  • vvj 12
  • System.out.println(v2)
  • vk stdin.nextInt()

14
Consider
  • int v new int10
  • int i 7
  • int j 2
  • int k 4
  • v0 1
  • vi 5
  • vj vi 3
  • vj1 vi v0
  • vvj 12
  • System.out.println(v2)
  • vk stdin.nextInt()

15
Consider
  • int v new int10
  • int i 7
  • int j 2
  • int k 4
  • v0 1
  • vi 5
  • vj vi 3
  • vj1 vi v0
  • vvj 12
  • System.out.println(v2)
  • vk stdin.nextInt()

16
Consider
  • int v new int10
  • int i 7
  • int j 2
  • int k 4
  • v0 1
  • vi 5
  • vj vi 3
  • vj1 vi v0
  • vvj 12
  • System.out.println(v2)
  • vk stdin.nextInt()

8 is displayed
17
Consider
  • int v new int10
  • int i 7
  • int j 2
  • int k 4
  • v0 1
  • vi 5
  • vj vi 3
  • vj1 vi v0
  • vvj 12
  • System.out.println(v2)
  • vk stdin.nextInt()

Suppose 3 is extracted
18
Consider
  • Segment
  • int b new int100
  • b-1 0
  • b100 0
  • Causes
  • Array variable to reference a new list of 100
    integers
  • Each element is initialized to 0
  • Two exceptions to be thrown
  • -1 is not a valid index too small
  • 100 is not a valid index too large
  • IndexOutOfBoundsException

19
Consider
  • Point p new Point3
  • p0 new Point(0, 0)
  • p1 new Point(1, 1)
  • p2 new Point(2, 2)
  • p0.setX(1)
  • p1.setY(p2.getY())
  • Point vertex new Point(4,4)
  • p1 p0
  • p2 vertex

20
Consider
  • Point p new Point3
  • p0 new Point(0, 0)
  • p1 new Point(1, 1)
  • p2 new Point(2, 2)
  • p0.setX(1)
  • p1.setY(p2.getY())
  • Point vertex new Point(4,4)
  • p1 p0
  • p2 vertex

21
Consider
  • Point p new Point3
  • p0 new Point(0, 0)
  • p1 new Point(1, 1)
  • p2 new Point(2, 2)
  • p0.setX(1)
  • p1.setY(p2.getY())
  • Point vertex new Point(4,4)
  • p1 p0
  • p2 vertex

22
Consider
  • Point p new Point3
  • p0 new Point(0, 0)
  • p1 new Point(1, 1)
  • p2 new Point(2, 2)
  • p0.setX(1)
  • p1.setY(p2.getY())
  • Point vertex new Point(4,4)
  • p1 p0
  • p2 vertex

23
Consider
  • Point p new Point3
  • p0 new Point(0, 0)
  • p1 new Point(1, 1)
  • p2 new Point(2, 2)
  • p0.setX(1)
  • p1.setY(p2.getY())
  • Point vertex new Point(4,4)
  • p1 p0
  • p2 vertex

24
Consider
  • Point p new Point3
  • p0 new Point(0, 0)
  • p1 new Point(1, 1)
  • p2 new Point(2, 2)
  • p0.setX(1)
  • p1.setY(p2.getY())
  • Point vertex new Point(4,4)
  • p1 p0
  • p2 vertex

25
Consider
  • Point p new Point3
  • p0 new Point(0, 0)
  • p1 new Point(1, 1)
  • p2 new Point(2, 2)
  • p0.setX(1)
  • p1.setY(p2.getY())
  • Point vertex new Point(4,4)
  • p1 p0
  • p2 vertex

26
Explicit initialization
  • Syntax

ElementType
id

exp
,
exp
,
...
exp










0
1
-1
n
27
Explicit initialization
  • Example
  • String puppy pika, arlo, shadow",
    lucia"
  • int unit 1
  • Equivalent to
  • String puppy new String4
  • puppy0 pika" puppy1 arlo"
  • puppy2 shadow" puppy4 lucia"
  • int unit new int1
  • unit0 1

28
Empty set an example
29
Array members
  • Member length
  • Size of the array
  • for (int i 0 i lt puppy.length i)
  • System.out.println(puppyi)

30
Array members
  • Member clone()
  • Produces a shallow copy
  • Point u new Point(0, 0), new Point(1, 1)
  • Point v u.clone()
  • v1 new Point(4, 30)

31
Array members
  • Member clone()
  • Produces a shallow copy
  • Point u new Point(0, 0), new Point(1, 1)
  • Point v u.clone()
  • v1 new Point(4, 30)

32
Array members
  • Member clone()
  • Produces a shallow copy
  • Point u new Point(0, 0), new Point(1, 1)
  • Point v u.clone()
  • v1 new Point(4, 30)

33
Array members
  • Member clone()
  • Produces a shallow copy
  • Point u new Point(0, 0), new Point(1, 1)
  • Point v u.clone()
  • v1 new Point(4, 30)

34
Making a deep copy
  • Example
  • Point w new Pointu.length
  • for (int i 0 i lt u.length i)
  • wi (Point) ui.clone()

35
Making a deep copy
36
End of lecture on 10 November 2004
37
Searching for a value
  • System.out.println("Enter search value (number)
    ")
  • int key stdin.nextInt()
  • int i
  • for (i 0 i lt data.length i)
  • if (key datai)
  • break
  • if (i ! data.length)
  • System.out.println(key " is the " I "-th
    element")
  • else
  • System.out.println(key " is not in the list")

38
Searching for a value
  • System.out.println("Enter search value (number)
    ")
  • int key stdin.nextInt()
  • int i
  • for (i 0 i lt data.length i)
  • if (key datai)
  • break
  • if (i ! data.length)
  • System.out.println(key " is the " I "-th
    element")
  • else
  • System.out.println(key " is not in the list")

39
Searching for a value
  • System.out.println("Enter search value (number)
    ")
  • int key stdin.nextInt()
  • int i
  • for (i 0 i lt data.length i)
  • if (key datai)
  • break
  • if (i ! data.length)
  • System.out.println(key " is the " I "-th
    element")
  • else
  • System.out.println(key " is not in the list")

40
Searching for a value
  • System.out.println("Enter search value (number)
    ")
  • int key stdin.nextInt()
  • int i
  • for (i 0 i lt data.length i)
  • if (key datai)
  • break
  • if (i ! data.length)
  • System.out.println(key " is the " I "-th
    element")
  • else
  • System.out.println(key " is not in the list")

41
Searching for a value
  • System.out.println("Enter search value (number)
    ")
  • int key stdin.nextInt()
  • int i
  • for (i 0 i lt data.length i)
  • if (key datai)
  • break
  • if (i ! data.length)
  • System.out.println(key " is the " I "-th
    element")
  • else
  • System.out.println(key " is not in the list")

42
Searching for a value
  • System.out.println("Enter search value (number)
    ")
  • int key stdin.nextInt()
  • int i
  • for (i 0 i lt data.length i)
  • if (key datai)
  • break
  • if (i ! data.length)
  • System.out.println(key " is the " I "-th
    element")
  • else
  • System.out.println(key " is not in the list")

43
Searching for a value
  • System.out.println("Enter search value (number)
    ")
  • int key stdin.nextInt()
  • int i
  • for (i 0 i lt data.length i)
  • if (key datai)
  • break
  • if (i ! data.length)
  • System.out.println(key " is the " I "-th
    element")
  • else
  • System.out.println(key " is not in the list")

44
Searching for a value
  • System.out.println("Enter search value (number)
    ")
  • int key stdin.nextInt()
  • int i
  • for (i 0 i lt data.length i)
  • if (key datai)
  • break
  • if (i ! data.length)
  • System.out.println(key " is the " I "-th
    element")
  • else
  • System.out.println(key " is not in the list")

45
Searching for a value
  • System.out.println("Enter search value (number)
    ")
  • int key stdin.nextInt()
  • int i
  • for (i 0 i lt data.length i)
  • if (key datai)
  • break
  • if (i ! data.length)
  • System.out.println(key " is the " I "-th
    element")
  • else
  • System.out.println(key " is not in the list")

46
Searching for a value
  • System.out.println("Enter search value (number)
    ")
  • int key stdin.nextInt()
  • int i
  • for (i 0 i lt data.length i)
  • if (key datai)
  • break
  • if (i ! data.length)
  • System.out.println(key " is the " I "-th
    element")
  • else
  • System.out.println(key " is not in the list")

47
Searching for a value
  • System.out.println("Enter search value (number)
    ")
  • int key stdin.nextInt()
  • int i
  • for (i 0 i lt data.length i)
  • if (key datai)
  • break
  • if (i ! data.length)
  • System.out.println(key " is the " I "-th
    element")
  • else
  • System.out.println(key " is not in the list")

48
Searching for a value
  • System.out.println("Enter search value (number)
    ")
  • int key stdin.nextInt()
  • int i
  • for (i 0 i lt data.length i)
  • if (key datai)
  • break
  • if (i ! data.length)
  • System.out.println(key " is the " I "-th
    element")
  • else
  • System.out.println(key " is not in the list")

49
Searching for a value
  • System.out.println("Enter search value (number)
    ")
  • int key stdin.nextInt()
  • int i
  • for (i 0 i lt data.length i)
  • if (key datai)
  • break
  • if (i ! data.length)
  • System.out.println(key " is the " I "-th
    element")
  • else
  • System.out.println(key " is not in the list")

50
Searching for the minimum value
  • Segment
  • int minimumSoFar sample0
  • for (int i 1 i lt sample.length i)
  • if (samplei lt minimumSoFar)
  • minimumSoFar samplei

51
ArrayTools.java method sequentialSearch()
  • public static int sequentialSearch(int data,
    int key)
  • for (int i 0 i lt data.length i)
  • if (datai key)
  • return i
  • return -1
  • Consider
  • int score 6, 9, 82, 11, 29, 85, 11, 28, 91
  • int i1 sequentialSearch(score, 11)
  • int i2 sequentialSearch(score, 30)

52
ArrayTools.java method putList()
  • public static void putList(int data)
  • for (int i 0 i lt data.length i)
  • System.out.println(datai)
  • Consider
  • int score 6, 9, 82, 11, 29, 85, 11, 28, 91
  • putList(score)

53
  • public static int getList()
  • Scanner stdin new Scanner (System.in)
  • int buffer new intMAX_LIST_SIZE
  • int listSize 0
  • for (int i 0 i lt MAX_LIST_SIZE i)
  • String v stdin.nextLine()
  • if (v ! null)
  • int number Integer.parseInt(v)
  • bufferi number
  • listSize
  • else
  • break

ArrayTools.java method getList()
54
ArrayTools.java outline
  • In java.util
  • public class ArrayTools
  • // class constant
  • private static final int MAX_LIST_SIZE 1000
  • // sequentialSearch() examine unsorted list
    for key
  • public static int binarySearch(int data,
    int key) ...
  • // valueOf() produces a string representation
  • public static void putList(int data) ...
  • // getList() extract and return up to
    MAX_LIST_SIZE values
  • public static int getList() throws
    IOException ...
  • // reverse() reverses the order of the element
    values
  • public static void reverse(int list) ...

55
Demo.java
  • import java.io.
  • public class Demo
  • // main() application entry point
  • public static void main(String args) throws
    IOException
  • System.out.println("")
  • System.out.println("Enter list of integers")
  • int numbers ArrayTools.getList()
  • System.out.println("")
  • System.out.println("Your list")
  • ArrayTools.putList(numbers)
  • ArrayTools.reverse(numbers)
  • System.out.println("")
  • System.out.println("Your list in reverse")
  • ArrayTools.putList(numbers)
  • System.out.println()

56
(No Transcript)
57
Microsoft and patents

58
Sorting
  • Problem
  • Arranging elements so that they are ordered
    according to some desired scheme
  • Standard is non-decreasing order
  • Why don't we say increasing order?
  • Major tasks
  • Comparisons of elements
  • Updates or element movement

59
Selection sorting
  • Algorithm basis
  • On iteration i, a selection sorting method
  • Finds the element containing the ith smallest
    value of its list v and exchanges that element
    with vi
  • Example iteration 0
  • Swaps smallest element with v0
  • This results in smallest element being in the
    correct place for a sorted result

60
Selection sorting
  • Algorithm basis
  • On iteration i, a selection sorting method
  • Finds the element containing the ith smallest
    value of its list v and exchanges that element
    with vi
  • Example iteration 0
  • Swaps smallest element with v0
  • This results in smallest element being in the
    correct place for a sorted result

61
Selection sorting
  • Algorithm basis
  • On iteration i, a selection sorting method
  • Finds the element containing the ith smallest
    value of its list v and exchanges that element
    with vi
  • Example iteration 1
  • Swaps second smallest element with v1
  • This results in second smallest element being in
    the correct place for a sorted result

62
Selection sorting
  • Algorithm basis
  • On iteration i, a selection sorting method
  • Finds the element containing the ith smallest
    value of its list v and exchanges that element
    with vi
  • Example iteration 1
  • Swaps second smallest element with v1
  • This results in second smallest element being in
    the correct place for a sorted result

63
ArrayTools.java selection sorting
  • public static void selectionSort(char v)
  • for (int i 0 i lt v.length-1 i)
  • // find the location of the ith smallest
    element
  • int spot i
  • for (int j i1 j lt v.length j)
  • if (vj lt vspot) // is current location
    ok?
  • // update spot to index of smaller
    element
  • spot j
  • // spot is now correct, so swap elements
  • char rmbr vi
  • vi vspot
  • vspot rmbr

64
Iteration i
  • // find the location of the ith smallest element
  • int spot i
  • for (int j i1 j lt v.length j)
  • if (vj lt vspot) // is spot ok?
  • // update spot with index of smaller element
  • spot j
  • // spot is now correct, swap elements vspot and
    v0

65
Multidimensional arrays
  • Many problems require information be organized as
    a two-dimensional or multidimensional list
  • Examples
  • Matrices
  • Graphical animation
  • Economic forecast models
  • Map representation
  • Time studies of population change
  • Microprocessor design

66
Example
  • Segment
  • int m new int3
  • m0 new int4
  • m1 new int4
  • m2 new int4
  • Produces

When an array is created, each value is
initialized!
67
Example
  • Alternative
  • int m new int34
  • Produces

68
Multidimensional array visualization
  • A multi-dimensional array declaration (either
    one)
  • int m new int34
  • Produces

0
0
0
0
0
0
0
0
0
0
0
0
or
0
0
0
0
0
0
0
0
0
0
0
0
69
End of lecture on 15 November 2004
70
Example
  • Segment
  • for (int r 0 r lt m.length r)
  • for (int c 0 c lt mr.length c)
  • System.out.print("Enter a value ")
  • mrc stdin.nextInt()

71
Example
  • Segment
  • String s new String4
  • s0 new String2
  • s1 new String2
  • s2 new String4
  • s3 new String3
  • Produces

72
Multidimensional array visualization
  • Segment
  • String s new String4
  • s0 new String2
  • s1 new String2
  • s2 new String4
  • s3 new String3
  • Produces
  • Called a ragged array

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
or
0
0
0
0
0
0
73
Example
  • Segment
  • int c 1, 2, 3, 4, 5, 6, 7, 8, 9
  • Produces

74
Matrices
  • A two-dimensional array is sometimes known as a
    matrix because it resembles that mathematical
    concept
  • A matrix a with m rows and n columns is
    represented mathematically in the following
    manner

75
Matrix addition
  • Definition C A B
  • cij aij bij
  • cij is sum of the elements in the same row and
    column of A and B

76
Matrix addition
  • public static double add(double a,
    double b)
  • // determine number of rows in solution
  • int m a.length
  • // determine number of columns in solution
  • int n a0.length
  • // create the array to hold the sum
  • double c new doublemn
  • // compute the matrix sum row by row
  • for (int i 0 i lt m i)
  • // produce the current row
  • for (int j 0 j lt n j)
  • cij aij bij

77
Todays dose of demotivators
Write a Comment
User Comments (0)
About PowerShow.com