22
Linear Data Structure:Arrays Tazeen Muzammil MSSE

Lec 2-Arrays and String Processing

Embed Size (px)

Citation preview

Page 1: Lec 2-Arrays and String Processing

Linear Data Structure:Arrays

Tazeen MuzammilMSSE

Page 2: Lec 2-Arrays and String Processing

Physical Memory

• We have to store our data structures in the memory of our computer.

• Memory is organized into banks, rows, columns etc.

• We supply a bank number, row number etc (= an address), memory returns us the contents

• Address → contents

Page 3: Lec 2-Arrays and String Processing

Physical Memory

Page 4: Lec 2-Arrays and String Processing

Arrays

• The array is the most commonly used data storage structure; its built into most programming languages.

• Since arrays are usually easy to traverse, search and sort, they are frequently used to store relatively permanent collection of data.

• But if the size of the structure and the data in the structure is constantly changing the array may not be useful.

• The elements of the array may be denoted by the bracket notation

A[1], A[2], A[3]…….A[n]

Page 5: Lec 2-Arrays and String Processing

Linear Array

• A linear array is a list of finite number n of homogeneous data elements such that:– The elements of the array are referenced

respectively by an index set consisting of n consecutive numbers.

– The elements of the array are sorted respectively in successive memory location.

The number n of elements is called the length or size of the array.

Page 6: Lec 2-Arrays and String Processing

Length of the Array

• The length or the number of data elements of the array can be obtained by this formula:

Length= UB-LB+1where:

UB is the largest index, called the upper bound LB is the smallest index, called the lower bound

Page 7: Lec 2-Arrays and String Processing

Representation of Linear Arrays in Memory

• Let LA be a linear array• The elements of LA are stored in successive memory cells.

So the computer does not need to keep track of the address of every element of LA, but needs to keep track only of the address of the first element of LA denoted by:

Base(LA)

• Using this address the computer can calculate the address of any element of LA by the following formula:

LOC(LA[k])=Base(LA)+w(K-LB)

where:K is the array indexW is the width of the record

Page 8: Lec 2-Arrays and String Processing

Representation of Linear Arrays in Memory

Page 9: Lec 2-Arrays and String Processing

Exercise

• Consider the linear arrays AAA(5:50), BBB(-5:10), and CCC(18)a) Find the number o elements in each arrayb) Suppose Base(AAA)=300 and w=4 for AAA. Find

the address of AAA[15], AAA[35] and AAA[55]

Page 10: Lec 2-Arrays and String Processing

Traversing Linear Array

• Let A be collection of data elements stored in the memory of the computer.

• If we want to count the number of elements of A or we want to print the contents of each element of A, this can be do by traversing A.

• Traversing means accessing and processing each element exactly once.

• Traversing a linear data structure is easier as compared to traversing a non linear structure.

Page 11: Lec 2-Arrays and String Processing

Algorithm (using repeat-while loop)• Here LA is a linear array with lower bound LB and

upper bound UB. This algorithm traverses LA applying an operation PROCESS to each element of LA.

1. [Initialize counter] Set K=LB2. Repeat steps 3 and 4while K< UB3. [Visit element]Apply PROCESS to LA[K]4. [Increase counter] Set K=K+15. [End of step 2 loop]6. Exit.

Page 12: Lec 2-Arrays and String Processing

Algorithm (using repeat-for loop)

• Here LA is a linear array with lower bound LB and upper bound UB. This algorithm traverses LA applying an operation PROCESS to each element of LA.

1. Repeat for K=LB to UB2. [Visit element]Apply PROCESS to LA[K]3. [End of loop]4. Exit.

Page 13: Lec 2-Arrays and String Processing

Exercise

• Consider the array AUTO which records the number of automobiles sold each year from 1932 through 1984

a) Find the number NUM of years during which more than 300 automobiles were sold.

b) Print each year and the number of automobiles sold in that year.

Page 14: Lec 2-Arrays and String Processing

Inserting and Deleting

• Let A be collection of data elements stored in the memory of the computer.

• Inserting refers to the operation of adding another element to the collection A. and

• Deleting refers to the operation of removing one of the element from A.

• Inserting an element at the end of a linear array can be easily done provided the memory space allocated for the array is large enough.

Page 15: Lec 2-Arrays and String Processing

Inserting Elements

Page 16: Lec 2-Arrays and String Processing

Algorithm for Insertion• LA is the linear array with N elements and K is the positive integer

such that K< N. This algorithm inserts an element ITEM into the Kth position in LA.

1. [Initialize counter] Set J=N2. Repeat steps 3 and 4while J > K3. [Move Jth element down]Set LA[J+1] = LA[J]4. [Decrease counter]Set J=J-15. [End of step 2 loop]6. [Insert element]Set LA[K]=ITEM7. [Reset N]Set N=N+18. Exit.

Page 17: Lec 2-Arrays and String Processing

Algorithm for Deletion

• LA is the linear array with N elements and K is the positive integer such that K< N. This algorithm deletes an element ITEM into the Kth position in LA.

1. Set ITEM =LA[K]2. Repeat for J = K to N-13. [Move J+1 element upward]Set LA[J] = LA[J+1] 4. [End of loop]5. [Reset N]Set N=N-16. Exit.

Page 18: Lec 2-Arrays and String Processing

Benefits of Using Array

• We can retrieve an array element from its index in constant time, meaning it costs us asymptotically nothing to look up a record.

• Consist solely of data, no space wasted on links.

• Physical continuity/memory locality: if we look up element i, there is a high probability we will look up element i+1 next

Page 19: Lec 2-Arrays and String Processing

Drawbacks of Using Array

• Inflexible: we have to decide in advance how much space we want when the array is allocated. Once the block of memory for the array has been allocated, that’s it –we’re stuck with the size we’ve got.

• If we try to write past the end of the array (overflow), we’ll be intruding on memory allocated for something else causing a segmentation fault.

• We can compensate by always allocating arrays larger than we think we’ll need, but this wastes a lot of space.

Page 20: Lec 2-Arrays and String Processing

Multi dimensional Arrays

• A two-dimensional m*n array A is a collection of m.n data elements such that each element is specified by a pair if integers(such as J,K), called subscript.

• Two-dimensional arrays are sometime called matrix array.

• Two-dimensional 3*4 array A1. A[1,1] A[1,2] A[1,3]2. A[2,1] A[2,2] A[2,3]3. A[3,1] A[3,2] A[3,3]

Page 21: Lec 2-Arrays and String Processing

Representation of Two-Dimensional Arrays in Memory

Column-major order Row-major order

[1,1]

[2,1]

[3,1]

[1,2]

[2,2]

[3,2]

[1,3]

[2,3]

[3,3]

[1,4]

[2,4]

[3,4]

C1

C2

C3

C4

[1,1]

[1,2]

[1,3]

[1,4]

[2,1]

[2,2]

[2,3]

[2,4]

[3,1]

[3,2]

[3,3]

[3,4]

r1

r2

r3

A is a two dimensional 3*4 array

Page 22: Lec 2-Arrays and String Processing

Matrix Multiplication

• Let A be an M* P matrix, and let B be a P*N matrix array. This algorithm stores the product of A and B in a M*N matrix array C1. Repeat Steps 2 to 4 for I=1to M2. Repeat Steps 3 to 4 for J=1to N3. Set C[I,J]=0 Initialize C[I,J]4. Repeat for K=1 to P 5. C[I,J]=C[I,J]+A[I,K]*B[K,J]

[END of inner loop] [END of Step 2 loop][END of Step 1 loop]