Week 2-Arrays-Updated
Week 2-Arrays-Updated
Week 2-Arrays-Updated
Week 2
1
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 allocation
o Static (or fixed sized) data structures (Arrays)
o Dynamic data structures (Linked lists)
Based on representation
o 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 types
o 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 data
o An array of students’ marks
o An array of students’ names
o 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
Index: 0 1 2 3 4 5 6 7 8 9
Value: 5 10 18 30 45 50 60 65 70 80
All elements in the array must have the same data type
Value: 0 1 2 3 4
Index: 5.5 10.2 18.5 45.6 60.5
Index: 0 1 2 3 4
Value: ‘A’ 10.2 55 ‘X’ 60.5 Not an array
Contiguous Memory
Array elements are stored at contiguous memory
locations
Index: 0 1 2 3 4 5 6 7 8 9
Value: 5 10 18 30 45 50 60 65 70 80
Index: 0 1 2 3 4 5 6 7 8 9
Value: 5 10 18 45 60 65 70 80
No empty segment in between values (3 & 5 are empty
– not allowed)
Declaring 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 ];
Using Arrays
Array_name[index]
For example, in Java
System.out.println(data[4]) will display 0
Output:
Examples Using Arrays (Cont.)
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
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-4array
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.)
Multidimensional arrays (Cont.)
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
Linear Search(Cont.)
Output:
Key 34 found at index: 6
Key 421 found at index: 2
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 the middle element equals to search key
Return array index
Output:
Key 14's position: 6
Key 432's position: 4
Binary Search Example
Exercises
36
a) 0 2 4 6 8
b) 1 3 5 7 9
c) 0 1 2 3 4 5 6 7 8 9
d) 1 2 3 4 5 6 7 8 9 10
2 Dec 2023 Computer Science Department
Exercises
38
a) 11 b) 10
c) 13 d) 14
a) 1 2 3 4 5 6 7 8 9 10
b) 0 1 2 3 4 5 6 7 8 9 10
c) i j k l m n o p q r
d) i i i i i i i i i i