首页 > 代码库 > poj1860
poj1860
Once an algorithm is given for a problem anddecided to be correct, an important step is to determine how much in the way of resources,such as time or space, the algorithm will require.
The important things to know are:
1)It‘s very bad style to include constants or low-order terms inside a Big-Oh
2)This means that in any analysis that ignore lower-order terms and constants.
Example: Do not say T(N) = O(2N^2) or T(N) = O(N^2 + N);
The correct form is T(N) = O(N^2).
General Rules:
Rule1: for loop:
The running time of a for loop is at most the running time of the statements inside the for loop(including tests) times the number of iterations.
As an example, the following program fragment is O(N):
for(i=0; i<N; i++) k++;Rule2:Nested for loop:
Analyze these inside out. The total running time of a statement inside a group of nested loops is the running time of the statement multiplied by the product of the sizes of all the for loops.
As an example, the following program fragment is O(N^2):
for(i=0; i<N; i++) for(j=0; j<N; j++) k++;Rule3:Consecutive Statements:
These just add(which means that the maximum is the one that counts).
As an example, the following program fragment, which has O(N) work followed by O(N^2) work, is also O(N^2):
for(i=0; i<N; i++) A[i] = 0; for(i=0; i<N; i++) for(j=0; j<N; j++) A[i] += A[j]+i+j;
Rule4:if/else:
For the fragment
if(Condition)
S1
else
S2
The running time of an if/else statement is never more than the running time of the test plus the larger of the running times of S1 and S2.
Notices:
A basic strategy of analyzing from the inside(or deepest part) our works.
If there are function calls, these must be analyzed first.
Reference:
Data Structures and Algorithm Analysis in C .Second Edtion
Than you for reading!
--By lzq at NanYang May.26.2014