Transcript for j
2. Getting started
Hsu, Lih-Hsing
Computer Theory Lab.
2.1 Insertion sort
Example: Sorting problem
Input: A sequence of n numbers a1 , a2 ,..., an
' , a' ,..., a'
a
Output: A permutation
of the
1 2
n
input sequence such that a1 a2 ... an .
The number that we wish to sort are known as
the keys.
Chapter 2
P.2
Computer Theory Lab.
Pseudocode
Insertion sort
Insertion-sort(A)
1 for j 2 to length[A]
2 do keyA[j]
3
Insert A[j] into the sorted sequence A[1..j-1]
4
i j-1
5
while i>0 and A[i]>key
6
do A[i+1] A[i]
7
i i-1
8
A[i +1] key
Chapter 2
P.3
Computer Theory Lab.
The operation of Insertion-Sort
Chapter 2
P.4
Computer Theory Lab.
Sorted in place :
The numbers are rearranged within the array A, with
at most a constant number of them sorted outside
the array at any time.
Loop invariant :
At the start of each iteration of the for loop of line 18, the subarray A[1..j-1] consists of the elements
originally in A[1..j-1] but in sorted order.
Chapter 2
Initialization
Maintenance
Termination
P.5
Computer Theory Lab.
2.2 Analyzing algorithms
Analyzing an algorithm has come to mean
predicting the resources that the algorithm
requires.
Chapter 2
Resources: memory, communication, bandwidth,
logic gate, time.
Assumption:one
access machine)
processor,
RAM(random-
(We shall have occasion to investigate models for
parallel computers and digital hardware.)
P.6
Computer Theory Lab.
2.2 Analyzing algorithms
Chapter 2
The best notion for input size depends on
the problem being studied..
The running time of an algorithm on a
particular input is the number of primitive
operations or “steps” executed. It is
convenient to define the notion of step so
that it is as machine-independent as possible
P.7
Computer Theory Lab.
Insertion-sort(A)
cost times
c1
n
1 for j 2 to length[A]
c2 n 1
2
do keyA[j]
3
Insert A[j] into the
sorted sequence A[1..j -1] 0
c4 n 1
4
i j -1
n
c5 j 2 t j
5
while i>0 and A[i]>key
n
c6 j2 ( t j 1)
6
do A[i +1] A[i]
n
c7 j 2 ( t j 1)
7
i i -1
8
A[i +1] key
c8 n 1
tj
: the number of times the while loop test
in line 5 is executed for the value of j.
Chapter 2
P.8
Computer Theory Lab.
the running time
n
T ( n ) c1n c2 ( n 1 ) c4 ( n 1 ) c5 t j
j 2
n
n
j 2
j 2
c6 ( t j 1 ) c7 ( t j 1 ) c8 ( n 1 )
t j 1
for j = 2,3,…,n : Linear function on n
T ( n ) c1n c2 ( n 1 ) c4 ( n 1 ) c5 ( n 1 ) c8 ( n 1 )
( c1 c2 c4 c5 c8 )n ( c2 c4 c5 c8 )
Chapter 2
P.9
Computer Theory Lab.
the running time
t j j for j = 2,3,…,n : quadratic function
on n.
n(n 1)
T (n) c1n c2 (n 1) c4 (n 1) c5 (
1)
2
n(n 1)
n(n 1)
c6 (
) c7 (
) c8 (n 1)
2
2
c5 c6 c7 2
c5 c6 c7
(
)n (c1 c2 c4
c8 )n
2
2
(c2 c4 c5 c8 )
Chapter 2
P.10
Computer Theory Lab.
Worst-case and average-case
analysis
Usually, we concentrate on finding only on
the worst-case running time
Reason:
Chapter 2
It is an upper bound on the running time
The worst case occurs fair often
The average case is often as bad as the worst
case. For example, the insertion sort. Again,
quadratic function.
P.11
Computer Theory Lab.
Order of growth
Chapter 2
In some particular cases, we shall be
interested in average-case, or expect
running time of an algorithm.
It is the rate of growth, or order of
growth, of the running time that really
interests us.
P.12
Computer Theory Lab.
2.3 Designing algorithms
There are many ways to design algorithms:
Incremental approach: insertion sort
Divide-and-conquer: merge sort
recursive:
Chapter 2
divide
conquer
combine
P.13
Computer Theory Lab.
Merge(A,p,q,r)
1 n1 q – p + 1
2 n2 r – q
3 create array L[ 1 .. n1 + 1 ] and R[ 1 ..n2 + 1 ]
4 for i 1 to n1
5
do L[ i ] A[ p + i – 1 ]
6 for j 1 to n2
7
do R[ i ] A[ q + j ]
8
L[n1 + 1]
9
R[n2 + 1]
Chapter 2
P.14
Computer Theory Lab.
Merge(A,p,q,r)
10 i 1
11 j 1
12 for k p to r
13
do if L[ i ] R[ j ]
14
then A[ k ] L[ i ]
15
ii+1
16
else A[ k ] R[ j ]
17
j j+1
Chapter 2
P.15
Computer Theory Lab.
Example of Merge Sort
Chapter 2
P.16
Computer Theory Lab.
MERGE-SORT(A,p,r)
1 if p < r
2
then q(p+r)/2
3
MERGE-SORT(A,p,q)
4
MERGE-SORT(A,q+1,r)
5
MERGE(A,p,q,r)
Chapter 2
P.18
Computer Theory Lab.
Chapter 2
P.19
Computer Theory Lab.
Analysis of merge sort
Analyzing divide-and-conquer algorithms
(1 )
if n c
T( n )
aT ( n / b ) D( n ) c( n ) otherwise
See Chapter 4
Analysis of merge sort
(1 )
if
T( n )
2T ( n / 2 ) ( n ) if
n 1
n 1
T ( n ) ( n log n )
Chapter 2
P.20
Computer Theory Lab.
Analysis of merge sort
c
if n 1
T ( n)
2T (n / 2) cn if n 1
where the constant c represents the time
require to solve problems of size 1 as
well as the time per array element of
the divide and combine steps.
Chapter 2
P.21
Computer Theory Lab.
Chapter 2
P.22
Computer Theory Lab.
Outperforms insertion sort!
Chapter 2
P.23