Title: Arrays
1Arrays
Week 2
2Data Structures
- Data structure
- A particular way of storing and organising data
in a computer so that it can be used efficiently - Types of data structures
- Based on memory allocation
- Static (or fixed sized) data structures (Arrays)
- Dynamic data structures (Linked lists)
- Based on representation
- Linear (Arrays/linked lists)
- Non-linear (Trees/graphs)
3Array motivation
- You want to store 5 numbers in a computer
- Define 5 variables, e.g. num1, num2, ..., num5
- What, if you want to store 1000 numbers?
- Defining 1000 variables is a pity!
- Requires much programming effort
- Any better solution?
- Yes, some structured data type
- Array is one of the most common structured data
types - Saves a lot of programming effort (cf. 1000
variable names)
4What is an Array?
- A collection of data elements in which
- all elements are of the same data type, hence
homogeneous data - An array of students marks
- An array of students names
- An array of objects (OOP perspective!)
- elements (or their references) are stored at
contiguous/ consecutive memory locations - Array is a static data structure
- An array cannot grow or shrink during program
execution its size is fixed
5Basic concepts
- Array name (data)
- Index/subscript (0...9)
- The slots are numbered sequentially starting at
zero (Java, C) - If there are N slots in an array, the index will
be 0 through N-1 - Array length N 10
- Array size N x Size of an element 40
- Direct access to an element
6Homogeneity
Index
-
- All elements in the array must have the same data
type
Value
Value
Index
Index
Value
Not an array
7Contiguous Memory
- Array elements are stored at contiguous memory
locations - No empty segment in between values (3 5 are
empty not allowed)
Index
Value
Index
Value
8Declaring and Creating Arrays
- Declaring and Creating arrays
- Arrays are objects that occupy memory
- Created dynamically with keyword new
- int c new int 12
- Equivalent to int c // declare array
variable c new int 12 // create array - We can create arrays of objects too
- String b new String 100
9Using Arrays
- Array_nameindex
- For example, in Java
- System.out.println(data4) will display 0
- data3 99 will replace -3 with 99
10Using Arrays
- Array_nameindex
- For example, in Java
- System.out.println(data4) will display 0
- data3 99 will replace -3 with 99
11Using Arrays
- Using an array initializer
- Use initializer list
- Items enclosed in braces ()
- Items in list separated by commas
- int n 10, 20, 30, 40, 50
- Creates a five-element array
- Index values of 0, 1, 2, 3, 4
- Do not need keyword new
12Using Arrays (Cont.)
- To declare an array follow the type with (empty)
s - int grade //or
- int grade //both declare an int array
- In Java arrays are objects so must be created
with the new keyword - To create an array of ten integers
- int grade new int10
- Note that the array size has to be specified,
although it can be specified with a variable at
run-time
13Examples Using Arrays (Cont.)
- Calculating the value to store in each array
element - Initialize elements of 10-element array to even
integers
14Examples Using Arrays (Cont.)
InitArray.javaLine 10Declare array as an array
of intsLine 12Create 10 ints for arrayLine
16Use array index to assign array value
15Examples Using Arrays (Cont.)
16Examples Using Arrays (Cont.)
- Summing the elements of an array
- Array elements can represent a series of values
- We can sum these values
17Some more concepts
- data -1 always illegal
- data 10 illegal (10 gt upper bound)
- data 1.5 always illegal
- data 0 always OK
- data 9 OK
- Q. What will be the output of?
- data5 10
- data3 data3 10
18Arrays Dimensionality
- One dimensional (just a linear list)
- e.g.,
- Only one subscript is required to access an
individual element - Two dimensional (matrix/table)
- e.g., 2 x 4 matrix (2 rows, 4 columns)
Col 0 Col 1 Col 2 Col 3
Row 0 20 25 60 40
Row 1 30 15 70 90
19Multidimensional arrays
- Multidimensional arrays
- Tables with rows and columns
- Two-dimensional array
- Declaring two-dimensional array b22
- int b 1, 2 , 3, 4
- 1 and 2 initialize b00 and b01
- 3 and 4 initialize b10 and b11
- int b 1, 2 , 3, 4, 5
- row 0 contains elements 1 and 2
- row 1 contains elements 3, 4 and 5
20Multidimensional arrays (Cont.)
- Creating multidimensional arrays
- Can be allocated dynamically
- 3-by-4 array
- int b b new int 3 4
- Rows can have different number of columns
- int b b new int 2 // allocate
rows b 0 new int 5 // allocate row 0
b 1 new int 3 // allocate row 1
21Multidimensional arrays (Cont.)
Column 0
Column 1
Column 2
Column 3
Row 0
a 0 0
a 0 1
a 0 2
a 0 3
Row 1
a 1 0
a 1 1
a 1 2
a 1 3
Row 2
a 2 0
a 2 1
a 2 2
a 2 3
Column index
Row index
Array name
22Multidimensional arrays (Cont.)
InitArray.javaLine 16Declare array1 with six
initializers in two sublists Line 17Declare
array2 with six initializers in three sublists
23Multidimensional arrays (Cont.)
InitArray.javaLine 34arrayrow.length returns
number of columns associated with row subscript
Line 35Use double-bracket notation to access
two-dimensional array values
24Searching Arrays Linear Search and Binary Search
- Searching
- Finding elements in large amounts of data
- Determine whether array contains value matching
key value - Linear searching
- Binary searching
25Searching Arrays Linear Search and Binary Search
(Cont.)
- Linear search
- Compare each array element with search key
- If search key found, return element index
- If search key not found, return 1 (invalid
index) - Works best for small or unsorted arrays
- Inefficient for larger arrays
26Linear Search
LinearSearch.javaLine 11Declare array of ints
27Linear Search(Cont.)
LinearSearch.javaLines 39-42Allocate 100 ints
for array and populate array with even ints
Line 50Loop through arrayLines 53-54If
array element at index matches search key, return
index
28Linear Search(Cont.)
LinearSearch.javaLine 61 Invoked when user
presses Enter Line 68Invoke method
linearSearch, using array and search key as
arguments
29Binary Search
- Binary search
- Efficient for large, sorted arrays
- Eliminates half of the elements in search through
each pass - Compare middle array element to search key
- If element equals key
- Return array index
- If element is less than key
- Repeat search on first half of array
- If element is greater then key
- Repeat search on second half of array
- Continue search until
- element equals search key (success)
- Search contains one element not equal to key
(failure)
30Binary Search (Cont.)
BinarySearch.javaLine 14Declare array of ints
31Binary Search (Cont.)
BinarySearch.javaLines 48-51Allocate 15 ints
for array and populate array with even
ints Line 56Invoked when user presses
Enter
32Binary Search (Cont.)
BinarySearch.javaLine 65Invoke method
binarySearch, using array and search key as
arguments
33Binary Search (Cont.)
BinarySearch.javaLines 93-94If search key
matches middle array element, return element
indexLines 97-98If search key is less than
middle array element, repeat search on first
array halfLines 101-102If search key is greater
than middle array element, repeat search on
second array halfLines 112-137Method
build-Output displays array contents being
searched
34Binary Search (Cont.)
BinarySearch.javaLine 128Display an asterisk
next to middle element
35Binary Search (Cont.)