49
Week # 2: Arrays

Week # 2: Arrays. Data structure A particular way of storing and organising data in a computer so that it can be used efficiently Types of data

Embed Size (px)

Citation preview

Page 1: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

Week # 2: Arrays

Page 2: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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 representationo Linear (Arrays/linked lists)o Non-linear (Trees/graphs)

Page 3: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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)

Page 4: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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

o 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

Page 5: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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

Page 6: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

All elements in the array must have the same data type

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.5 10.2 18.5 45.6 60.5

0 1 2 43

Index:

Value: ‘A’ 10.2 55 ‘X’ 60.5

0 1 2 43

Not an array

Page 7: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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

Page 8: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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

Page 9: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

Array_name[index] For example, in Java

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

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

Page 10: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

Array_name[index] For example, in Java

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

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

Page 11: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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

Page 12: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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

Page 13: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

• Calculating the value to store in each array element– Initialize elements of 10-element array to even integers

Page 14: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

InitArray.java

Line 10Declare array as an array of ints

Line 12Create 10 ints for array

Line 16Use array index to assign array value

Page 15: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data
Page 16: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

Summing the elements of an array◦ Array elements can represent a series of values

We can sum these values

Page 17: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

Histogram.java

Line 9Declare array with initializer list

Line 19For each array element, print associated number of asterisks

Page 18: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data
Page 19: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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]  + 102. data[3] = data[3] + 10

Page 20: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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

Page 21: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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

Page 22: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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

Page 23: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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 ]

Page 24: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

InitArray.java

Line 16Declare array1 with six initializers in two sublists

Line 17Declare array2 with six initializers in three sublists

Page 25: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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

Page 26: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

Searching◦ Finding elements in large amounts of data

Determine whether array contains value matching key value

◦ Linear searching◦ Binary searching

Page 27: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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

Page 28: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

LinearSearch.java

Line 11Declare array of ints

Page 29: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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

Page 30: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

LinearSearch.java

Line 61 Invoked when user presses Enter

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

Page 31: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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)

Page 32: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

Declae array of ints

BinarySearch.java

Line 14Declare array of ints

Page 33: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

BinarySearch.java

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

Line 56Invoked when user presses Enter

Page 34: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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

Page 35: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

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

Page 36: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

BinarySearch.java

Line 128Display an asterisk next to middle element

Page 37: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data
Page 38: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

SortingSorting

Motivation Generally, to arrange a list of elements in some order

List of numbers 10 20 50 30 40 60 25 (Unsorted list) 10 20 25 30 40 50 60 (Sorted list,

ascending) 60 50 40 30 25 20 10 (Sorted list,

descending) List of alphabets

P A K I S T A N (Unsorted list) A A I K N P S T (Sorted list, ascending) T S P N K I A A (Sorted list, descending)

Page 39: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

Sorting AlgorithmsSorting AlgorithmsSorting AlgorithmsSorting Algorithms

1. Bubble Sort

2. Selection Sort

There are few more sorting algorithms; you can find them in a book on data structures and algorithms (or on the Web)

Page 40: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

Bubble Sort Algorithm: Bubble Sort Algorithm: InformalInformalBubble Sort Algorithm: Bubble Sort Algorithm: InformalInformal Repeatedly compare the elements at

consecutive locations in a given list, and do the following until the elements are in required order:

If elements are not in the required order, swap them (change their position)

Otherwise do nothing

Page 41: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

3

15

45

40

8

12

5

22

14

3

15

45

40

8

12

5

22

14

3

15

45

40

22

8

12

5

14

3

15

45

40

22

8

12

5

14

Bubble Sort in Action: Bubble Sort in Action: Phase 1Phase 1

3

15

45

40

8

12

22

5

14

3

15

45

40

8

22

12

5

14

3

15

45

40

22

8

12

5

14

3

45

15

40

22

8

12

5

14

45

3

15

40

22

8

12

5

14

8 comparisons

Page 42: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

45

3

15

40

22

8

12

5

14

45

3

15

40

22

14

8

12

5

45

3

15

40

22

14

8

12

5

Bubble Sort in Action: Bubble Sort in Action: Phase 2Phase 2

45

3

15

40

22

8

12

14

5

45

3

15

40

22

8

14

12

5

45

3

15

40

22

14

8

12

5

45

3

40

15

22

14

8

12

5

45

40

3

15

22

14

8

12

5

7 comparisons

Page 43: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

45

40

3

15

22

14

12

8

5

45

40

3

15

22

14

12

8

5

45

40

3

15

22

14

8

12

5

45

40

3

15

22

14

8

12

5

45

40

3

15

22

14

12

8

5

45

40

3

22

15

14

12

8

5

45

40

22

3

15

14

12

8

5

Bubble Sort in Action: Bubble Sort in Action: Phase 3Phase 3

6 comparisons

Page 44: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

45

40

22

3

15

14

12

8

5

Bubble Sort in Action: Bubble Sort in Action: Phase 4Phase 4

45

40

22

3

15

14

12

8

5

45

40

22

3

15

14

12

8

5

45

40

22

3

15

14

12

8

5

45

40

22

3

15

14

12

8

5

45

40

22

15

3

14

12

8

5

5 comparisons

Page 45: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

Bubble Sort in Action: Bubble Sort in Action: Phase 5Phase 5

45

40

22

15

3

14

12

8

5

4 comparisons

45

40

22

15

3

14

12

8

5

45

40

22

15

3

14

12

8

5

45

40

22

15

3

14

12

8

5

45

40

22

15

14

3

12

8

5

Page 46: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

Bubble Sort in Action: Bubble Sort in Action: Phase 6Phase 6

3 comparisons

45

40

22

15

14

3

12

8

5

45

40

22

15

14

3

12

8

5

45

40

22

15

14

3

12

8

5

45

40

22

15

14

12

3

8

5

Page 47: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

Bubble Sort in Action: Bubble Sort in Action: Phase 7Phase 7

2 comparisons

45

40

22

15

14

12

3

8

5

45

40

22

15

14

12

3

8

5

45

40

22

15

14

12

8

3

5

Page 48: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

Bubble Sort in Action: Bubble Sort in Action: Phase 8Phase 8

1 comparison

45

40

22

15

14

12

8

3

5

45

40

22

15

14

12

8

5

3

Page 49: Week # 2: Arrays.  Data structure  A particular way of storing and organising data in a computer so that it can be used efficiently  Types of data

Bubble Sort Algorithm in Bubble Sort Algorithm in JavaJava

Bubble Sort Algorithm in Bubble Sort Algorithm in JavaJava void bubbleSort(int List[])

{ int temp; int size = List.length; for (i = 0; i < size - 1; i++) {

for (j = 0; j < size – (i + 1); j++) { if (List[j] > List[j+1]) { //swap

temp = List[j];List[j] = List[j+1];List[j+1] = temp;

} }

}}