0% found this document useful (0 votes)
28 views

Chapter 2 - Arrays: Tran Thanh Tung

This document discusses arrays in Java. It defines arrays as collections of variables of the same type that can be accessed via indexes. It covers linear and binary search techniques for arrays, with binary search having O(log N) time complexity. The document also discusses storing objects in arrays and using Big O notation to analyze algorithm efficiencies, with lower orders like O(1) and O(log N) being more efficient than higher orders like O(N) and O(N2).

Uploaded by

Không Có Tên
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views

Chapter 2 - Arrays: Tran Thanh Tung

This document discusses arrays in Java. It defines arrays as collections of variables of the same type that can be accessed via indexes. It covers linear and binary search techniques for arrays, with binary search having O(log N) time complexity. The document also discusses storing objects in arrays and using Big O notation to analyze algorithm efficiencies, with lower orders like O(1) and O(log N) being more efficient than higher orders like O(N) and O(N2).

Uploaded by

Không Có Tên
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

Chapter 2 -

Arrays
Tran Thanh Tung

1
2

Objective
 Basics of Array in Java
 Linear search – Binary search
 Storing objects
 Big O notation
3

Introduction
 How do we store list of integer entered by
user?

int num1;
int num2;
int num3;

 If there are 100 of them !?


4

Introduction
 Array is the most commonly used data
structure
 Built into most of the programming
languages

123 412 19 20
5

Definition
 An ARRAY is a collection of variables all of
the same TYPE
 Element
 Index / positions
 In Java

123 412 19 20
index 0 1 2 3 4
6

Accessing array elements


 Element is access by index number via
subscript
 In Java,
ArrayName[index]
 A[3], A[0]
 A[6]

A 123 412 19 20
index 0 1 2 3 4
7

Example in Java
int A[];
int A1[] = new int[100];
int A2[] = new int { 1, 7, 9, 20};

for (int i=0; i< 100; i++)


A1[i] = i*2;

for (int j=0; j< A2.length; j++)


A2[j] = j*2;
8

Operations on array
 Insertion
 Searching
 Deletion
(Demo on Array Workshop applet)

 Duplication issue

 How does it work ?


 Java code in p.
9

Delete an item
10

Multi-dimension array
A matrix 1 0 3 4
5 1 32 12
6 7 1 10
19 5 4 1
11

Two-dimension array
 Declaration
int [][] matrix = new int
[ROWS][COLUMNS];
int [][] matrix2 =
{
{1, 2, 3},
{6, 1, 4},
{9, 5, 1}
};

 Accessing
 matrix[0][10];
12

Linear searching technique


 Look for ‘20’

A 123 412 19 20 25
index 0 1 2 3 4
 Stepthrough the array
 Comparing searchKey with each element.
 Reach the end but don’t found matched
element
 Can’t find
13

Ordered arrays
 Data items are arranged in order of key value.

A 412 123 25 20 19
index 0 1 2 3 4

A2 19 20 25 123 412
Index 0 1 2 3 4
14

Linear searching in ordered


array
Look for ‘20’

A 412 123 25 20 19
index 0 1 2 3 4

A2 19 20 25 123 412
Index 0 1 2 3 4
15

Binary searching technique


 Guess the number between 1 and 100

?46

Smaller Larger
16

Binary searching technique


Step Number Result Range of possible
# guessed value
0 0-100
1 50 Too high 0-49
2 25 Too low 26-49
3 37 Too low 38-49
4 43 Too low 44-49
5 46 CORRECT
17
Algorithm

Binary search
Data structures and algorithms in Java – p.57
18
19

In class work
 Modify
the Binary search algorithm for a
descending array
20

Advantage of ordered
arrays
 Searching time : Good
 Inserting time : Not good
 Deleting time : Not good

 Useful when
 Searches are frequent
 Insertions and deletions are not
21

Logarithm
 Binary search
 Log2n Range Comparisons needed
10 4
100 7
1,000 10
10,000 14
100,000 17
1,000,000 20
10,000,000 24
100,000,000 27
1,000,000,000 30
22

Must known
2i n log2n 2i n log2n

20 1 0 26 64 6
21 2 1 27 128 7
22 4 2 28 256 8
23 8 3 29 512 9
24 16 4 210 1024 10
25 32 5 211 2048 11
23

Storing objects
We need to
 Store a collections of Students
 Search student by Student name
 Insert a new student, delete a student

In class work:
 Read the sample code in p.65-69
24

Big O notation
 Tomeasure the EFFICIENCY of algorithms
 Some notions
 Constant
 Proportional to N
 Proportional to log(N)
 Big
O relationships between time and
number of items
25

O(1) – constant
 Thetime needed by the algorithm is not
depend in size of items
 Example
 Insertion in an unordered array
 Any others ?
26

O(N) – Proportional to N
 Linear search of items in an array of N
items
On average T = K * N /2

 Average linear search times are


proportional to size of array.

 For
an array of N’ items
If N’ = 2 * N
Then T’ = 2 * T
27

O(log N) - Proportional to
log(N)
 For binary search:
T = K * log2(N)

 We can say : T = K * log(N)


(by lumping the difference between log2
and log into K)
28

O(N2)

O(N)

O(log N)
O(1)
29

Summary
 Arraysin Java are objects, created with new
operator
 Unordered arrays offer
 fast insertion,
 but slow searching and deletion
 Binary search can be applied to an ordered
array
 Big O notation provides a convenient way to
compare the speed of algorithms
 An algorithm that runs in O(1) is the best, O(log N)
is good, O(N) is fair and O(N2) is pretty bad

You might also like