Upload
saeed-sarshar
View
233
Download
1
Embed Size (px)
Citation preview
1
2
3
4
T(n) = n-1 + T(n-1) = n-1 + n-2 + T(n-2)
= n-1 + n-2 + n-3 + T(n-3)
...
...
T(n) = n-1 + n-2 +...+2+1 = 𝑛(𝑛−1)
2
5
T(n)=n-1+T(n-1) n>1
0 n=1
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1 void seqsearch (int n,const keytype s[],keytype x, index &location)
2 {
3 location=1;
4 while (location<=n&&s[location]!=x)
5 location++;
6 if(location>n)
7 location=0;
8 }
22
T(n)=1+T(n-1) n>1
1 n=1
T(n) = 1+ T(n-1) = 1+1+T(n-2) = 1+1+1+T(n-3) = n
23
1 void binsearch (int n,const keytype s[],keytype x, index &location){
2 index low,high,mid;
3 low=1; high=n; location=0;
4 while(low<=high && location==0){
5 mid=[(low+high)/2];
6 if(x==s[mid])
7 location=mid;
8 else if(x<s[mid])
9 high=mid-1;
10 else
11 low=mid+1;
12 }
13 }
24
T(n)=1+T(n/2) n>11 n=1
n=2𝑘:فرض
T(n) = 1+ T(n/2) = 1+1+T(n/22) = 1+1+1+T(n/23)
=k+T(n/2𝑘) = k+1
T(n)=log2 𝑛 +1
25
26
27
28
29
30
31
32
33
34
1 void mergesort (int n, keytype S[])
2 {
3 if (n>1) {
4 const int h=[n/2], m = n - h;
5 keytype U[1 ..h], V[1 ..m];
6 copy S[1] through S[h] to U[1] through U[h];
7 copy S[h+1] through S[n] to V[1] through V[m];
8 mergesort(h, U);
9 mergesort(m, V);
10 merge (h, m, U, V, S);
11 }
12 }
35
T(n)2T(n/2)+n-1 n>1
0 n=1
n=2𝑘:فرض
T(n)=2T(n/2)+n-1 = 2[2T(n/2)+(n/2)-1]+n-1
=22T(n/22)+n-2 +n-20
=22T(n/22)+2n-[21+20]
...
...
=2𝑘T(n/2𝑘)+kn-[2𝑘−1 +⋯+ 20]
=kn-1 x (1-2𝑘)/(1-2)=kn+1-2𝑘
T(n)=nlog2 𝑛+1-n
36
1 void merge (int h, int m, const keytype U[], const keytype V[],keytype S[]){
2 index i, j, k;
3 i = 1, j = 1, k = 1;
4 while (i< = h && j <= m) {
5 if (U[i] < V[j]) {
6 S[k] = U[i];
7 i++;}
8 else{
9 S[k] = V[j];
10 j++;}
11 k++;
12 if (i>h)
13 copy V[j] through V[m] to S[k] through S[h+m];
14 else
15 copy U[i] through U[h] to S[k] through S[h+m];
16 }
17 }
37
38
39
40
41
42
43
44
1 procedure maxmin(i,j,fmax,fmin)
2 begin
3 case
4 i = j : Fmax Fmin A(i)
5 i = j-1 : if A(i)<A(j) then
6 Fmax A(j),Fmin A(i);
7 else
8 Fmax A(i),Fmin A(j)
9 else : mid [(i+j)/2]
10 call maxmin(i,mid,gmax,gmin);
11 call maxmin(mid+1,j,hmax,hmin);
12 Fmax max(gmax,hmax);
13 Fm𝐢𝐧 min(gmin,hmin);
14 endelse;
15 end;
45
A=[5,7,-3,-2,7,9,3,6]
minMax(A,1,8,-3,9)
46
A=[5,7,-3,-2,7,9,3,6]
minMax(A,1,8,-3,9)
minMax(A,1,4,-3,7) minMax(A,5,8, 3,9)
47
A=[5,7,-3,-2,7,9,3,6]
minMax(A,1,8,-3,9)
minMax(A,1,4,-3,7) minMax(A,5,8, 3,9)
48
T(n)=
2T(n/2)+2 n>2
0 n=1
n=2𝑘:فرض
n/2=2𝑘−1
T(n)=2T(n/2)+2= 2[2T(n/4)+2]+2
=22T(n/22)+22 + 21
=23T(n/23)+23 + +22 + 21
...
...
=2𝑘−1T(n/2𝑘−1)+2𝑘−1 +⋯+ 2
=n/2+2 x 1−2𝑘−1
1−2=n/2-2+2𝑘 = (n/2)-2+n
T(n)=3(n/2)-2
1 n=2
49
≤ X X ≥X
50
51
1 void quicksort (index low,index high)
2 {
3 index pivot point;
4 if (high>low)
5 {
6 partition(low,high,pivot point);
7 quicksort(low,pivot point-1);
8 quicksort(pivot point+1,high);
9 }
10 }
52
53
1 void partition (index low,index high,index &pivotpoint)
2 {
3 index i,j;
4 keytype pivotitem;
5 pivotitem=s[low];
6 i=low;
7 for(j=low+1;j<=high;j++)
8 if(s[j]<pivotitem){
9 i++;
10 exchange s[i]ands[j];
11 }
12 pivot point=i;
13 exchange s[low]ands[pivot point];
14 }
54
55
56
57
58
59
60
61
62
63
64
65
6666
T(n)=n-1+T(0)+T(n-1) n>1
0 n=1
n=2𝑘:فرض
T(n) = n-1+T(n-1)= n-1+n-2+T(n-2)
= n-1+n-2+n-3+ T(n-3)
...
...
= n-1 + n-2 + n-3 + ... + 3 + 2 + 1
= n(n-1)/2
T(n)=𝑛2
2−𝑛
2
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
𝑻 𝒏 = 𝒂𝑻𝒏
𝒃+ 𝑪𝒏𝒌
T(n)=
a > 𝑏𝑘
a = 𝑏𝑘
a < 𝑏𝑘
𝑛log𝑏 𝑎
𝑛𝑘 log2 𝑛
𝑛𝑘
82
T(n)=1+T(n/2) n>11 n=1
a=1 , b=2 , k=0 (a = 𝑏𝑘)
T(n) = log2 𝑛
Example : Binary search
83
84
85
86
87
88
89
90
91
92
93
𝑎0𝑥0 + 𝑎1𝑥
1 +⋯+ 𝑎𝑛−1𝑥𝑛−1
𝑏0𝑥0 + 𝑏1𝑥
1 +⋯+ 𝑏𝑛−1𝑥𝑛−1
94
5𝑥2 + 4𝑥 − 5
5|2| 4|1| -5|0|
0 1 2 3
-5 4 5 0
2 1 0
5 4 -5
95
1 mult(A,B,C)
2 for i = 0 to 2(n-1) do
3 c[i] = 0
4 for i = 0 to n-1 do
5 for j = 0 to n-1 do
6 c[i+j] = c[i+j] + A[i] * B[j]
7 end
96
1 + x + 3𝑥2 − 4𝑥3 = 1 + 𝑥 + 3 − 4𝑥 𝑥2
1 + 2x − 5𝑥2 − 3𝑥3 = 1 + 2𝑥 + (−5 − 3𝑥)𝑥2
P1(x) Pr(x)
Qr(x)Q1(x)
R(x)=P(x).Q(x)=[P1+Pr.𝑥2][Q1+Qr.𝑥2]
R(x)=P(x).Q(x)=[P1.Q1+P1.Qr. 𝑥2+Pr.Q1. 𝑥2+Pr.Qr. 𝑥4]
97
a=4
b=2
k=1
a>𝑏𝑘
T(n)=𝑛log2 4 = 𝑛2
T(n)=4T(n/2)+n n>1
c n=1
98
𝒂𝟎 + 𝒂𝟏𝒙 +⋯+ 𝒂𝒏𝒙𝒏−𝟏
𝑎0 + 𝑎1𝑥 +⋯+ 𝑎𝑛2−1𝑥𝑛
2−1
+[𝑎𝑛2+ 𝑎𝑛
2+1𝑥 +⋯+ 𝑎𝑛−1𝑥
𝑛2−1]𝑥
𝑛2
𝒃𝟎 + 𝒃𝟏𝒙 +⋯+ 𝒃𝒏𝒙𝒏−𝟏
𝑏0 + 𝑏1𝑥 +⋯+ 𝑏𝑛2−1𝑥
𝑛
2−1
+[𝑏𝑛2+ 𝑏𝑛
2+1𝑥 +⋯+ 𝑏𝑛−1𝑥
𝑛2−1]𝑥
𝑛2
P1(x)
Pr(x)
Q1(x)
Qr(x)
99
𝑥𝑛
2 𝑥𝑛
2
𝑥𝑛
2 𝑥𝑛
a=4
𝑏𝑘=2
a>𝑏𝑘
T(n)=𝑛2
T(n)=4T(n/2)+𝜃n n>2b else
100
𝑥𝑛
2 𝑥𝑛
T(n)3T(n/2)+𝜃n n>2
b else
a=3 , 𝑏𝑘=2 ,a> 𝑏𝑘
T(n)=𝑛log2 3
101
±10𝑛
× → 34 + 12 102
18 + (56)102
P1(x) Pr(x)
Qr(x)Q1(x)
102 104
102
× × × × × 102 × × 104
× → × × × × × × 102
× → × × × × × × 102
0 × → × × × × × × 102
2 × → × × × × × × 102
× → × × × × × × 102