+ All Categories
Home > Documents > ARRAYS 1 Week 2. Data Structures Data structure A particular way of storing and organising data in...

ARRAYS 1 Week 2. Data Structures Data structure A particular way of storing and organising data in...

Date post: 02-Jan-2016
Category:
Upload: duane-eaton
View: 219 times
Download: 2 times
Share this document with a friend
Popular Tags:
35
ARRAYS ARRAYS 1 Week 2
Transcript

ARRAYSARRAYS

1

Week 2

Data 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 allocationo Static (or fixed sized) data structures (Arrays)o Dynamic data structures (Linked lists)

Based on representationo Linear (Arrays/linked lists)o Non-linear (Trees/graphs)

Array: 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

o Array is one of the most common structured data typeso Saves a lot of programming effort (cf. 1000 variable

names)

What is an Array?

A collection of data elements in which all elements are of the same data type, hence homogeneous

datao An array of students’ markso An array of students’ nameso 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

Basic 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

Homogeneity

All elements in the array must have the same data type

Index:

Value: 5 10 18 30 45 50 60 65 70 800 1 2 3 4 5 6 7 8 9

Index:

Value:

5.5 10.2 18.5 45.6 60.50 1 2 43

Index:Value: ‘A’ 10.2 55 ‘X’ 60.5

0 1 2 43

Not an array

Contiguous Memory

Array elements are stored at contiguous memory locations

No empty segment in between values (3 & 5 are empty – not allowed)

Index:

Value: 5 10 18 30 45 50 60 65 70 80

0 1 2 3 4 5 6 7 8 9

Index:

Value: 5 10 18 45 60 65 70 80

0 1 2 3 4 5 6 7 8 9

Declaring and Creating ArraysDeclaring 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 tooString b[] = new String[ 100 ];

Using Arrays

Array_name[index] For example, in Java

System.out.println(data[4]) will display 0

data[3] = 99 will replace -3 with 99

Using Arrays

Array_name[index] For example, in Java

System.out.println(data[4]) will display 0

data[3] = 99 will replace -3 with 99

Using Arrays

Using an array initializer Use initializer list

Items enclosed in braces ({}) Items in list separated by commasint n[] = { 10, 20, 30, 40, 50 };

Creates a five-element array Index values of 0, 1, 2, 3, 4

Do not need keyword new

Using Arrays (Cont.)

To declare an array follow the type with (empty) []sint[] 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 int[10];

Note that the array size has to be specified, although it can be specified with a variable at run-time

Examples Using Arrays (Cont.)

• Calculating the value to store in each array element

– Initialize elements of 10-element array to even integers

Examples Using Arrays (Cont.)

InitArray.java

Line 10Declare array as an array of ints

Line 12Create 10 ints for array

Line 16Use array index to assign array value

Examples Using Arrays (Cont.)

Examples Using Arrays (Cont.) Summing the elements of an array

Array elements can represent a series of values We can sum these values

Some more concepts

data[ -1 ] always illegal data[ 10 ] illegal   (10 > upper bound) data[ 1.5 ] always illegal data[ 0 ] always OK data[ 9 ] OK

Q. What will be the output of?

1. data[5]  + 10

2. data[3] = data[3] + 10

Array’s 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)

5 10 18 30 45 50 60 65 70 80

Col 0 Col 1 Col 2 Col 3

Row 0 20 25 60 40

Row 1 30 15 70 90

Multidimensional arrays

Multidimensional arrays Tables with rows and columns

Two-dimensional array Declaring two-dimensional array b[2][2]int b[][] = { { 1, 2 }, { 3, 4 } };

1 and 2 initialize b[0][0] and b[0][1] 3 and 4 initialize b[1][0] and b[1][1]

int b[][] = { { 1, 2 }, { 3, 4, 5 } }; row 0 contains elements 1 and 2 row 1 contains elements 3, 4 and 5

Multidimensional 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

Multidimensional arrays (Cont.)

a[ 1 ][ 0 ] a[ 1 ][ 1 ] a[ 1 ][ 2 ] a[ 1 ][ 3 ]

Row 0

Row 1

Row 2

Column 0 Column 1 Column 2 Column 3

Row index

Array name

Column index

a[ 0 ][ 0 ] a[ 0 ][ 1 ] a[ 0 ][ 2 ] a[ 0 ][ 3 ]

a[ 2 ][ 0 ] a[ 2 ][ 1 ] a[ 2 ][ 2 ] a[ 2 ][ 3 ]

Multidimensional arrays (Cont.)

InitArray.java

Line 16Declare array1 with six initializers in two sublists

Line 17Declare array2 with six initializers in three sublists

Multidimensional arrays (Cont.)

InitArray.java

Line 34array[row].length returns number of columns associated with row subscript

Line 35Use double-bracket notation to access two-dimensional array values

Searching 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

Searching 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

Linear Search

LinearSearch.java

Line 11Declare array of ints

Linear Search(Cont.)LinearSearch.javaLines 39-42Allocate 100 ints for array and populate array with even ints

Line 50Loop through array

Lines 53-54If array element at index matches search key, return index

Linear Search(Cont.)

LinearSearch.java

Line 61 Invoked when user presses Enter

Line 68Invoke method linearSearch, using array and search key as arguments

Binary 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)

Binary Search (Cont.)

Declae array of ints

BinarySearch.java

Line 14Declare array of ints

Binary Search (Cont.)BinarySearch.java

Lines 48-51Allocate 15 ints for array and populate array with even ints

Line 56Invoked when user presses Enter

Binary Search (Cont.)

BinarySearch.javaLine 65Invoke method binarySearch, using array and search key as arguments

Binary 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

Binary Search (Cont.)

BinarySearch.java

Line 128Display an asterisk next to middle element

Binary Search (Cont.)


Recommended