Professional Documents
Culture Documents
: .
,
,
.
. c
tA(n)cn2.
n/2,
.
. , ...
, 11 2013
:
: .
d ,
t(n)dn. ,
B
t B ( n)
3t A ( n / 2) t (n) 3c(( n 1) / 2) 2 dn
3 2 3
3
cn ( c d )n c
4
2
4
B n2,
25%.
;
. , ...
, 11 2013
:
: .
t A ( n)
t C ( n)
3tC ( n / 2) t (n)
n n0
nlg3 n1.59.
n. n0??
DQ(x) {
if (x )
return ADHOC(x);
x1, x2, , xk
for (i=1; i<=k; i++)
yi=DQ(xi);
yi y x
return y
}
. , ...
, 11 2013
:
: .
.
,
, .
n0 :
. n0
n,
n
.
. , ...
, 11 2013
:
: .
I
[n]
, . 0i<j n-1T[i] T[j]
x, . x
,
, .
int sequential(T[n],x) {
for (i=0;i<n;i++)
if (T[i]>x)
return i-1;
return n;
}
. , ...
, 11 2013
:
: .
II
: (n)
:
(1+2++n)/n , . (n(n+1)/2)/n, (n+1)/2. ,
O(n).
int binsearch(T[n], x) {
if (n=1 || x<T[0]) return O;
return binrec(T, x);
}
int binrec(T[i..j], x) {
// T[i]x<T[j+1] ij
if (i = j) return i;
int k=(i+j+1) / 2;
if (x<T[k])
return binrec(T[i..k-1], x);
else return binrec(T[k..j], x);
}
. , ...
, 11 2013
:
: .
III
. , ...
, 11 2013
:
: .
IV
log2n .
(log2n).
int iterbin(T[n], x) {
if (n=1 || x<T[0]) return O;
i=0; j=n-1;
while (i<j) {
// T[i]x < T[j+1]
int k=(i+j+1)/2;
if (x<T[k])
j=k-1;
else i=k;
}
return i;
}
. , ...
, 11 2013
:
: .
V
int iterbin2(T[n], x) {
if (n=1 || x<T[0])
return O;
i=0; j=n-1;
while (i<j) {
// T[i]x<T[j+1]
int k=(i+j+1) / 2;
if (x<T[k])
j=k-1;
else if (xT[k+1])
i=k+1;
else {i=k; j=k;}
}
return i;
}
n iterbin2
iterbin.
. , ...
, 11 2013
:
: .
[n] n .
.
,
.
mergesort(T[n]) {
if (n )
insert(T);
else
U=T[0..n/2];
V=T[1+n/2..n];
mergesort(U);
mergesort(V)
merge(T, U, V)
}
. , ...
, 11 2013
10
:
: .
I
.
,
,
.
(n logn)
,
(n2).
. , ...
, 11 2013
11
:
: .
, .
,
.
.
O(nlogn). ;
, :
n k
0 n-1. k-
m
#{i [0..n 1] | T[i] m} k
. , ...
, 11 2013
12
:
: .
int selection(T[n], k) {
if (n ) { sort T;
return T[k]}
p= [n];
u=#{i[0..n-1]|T[i]<p};
v=#{i[0..n-1]|T[i]p};
if (ku) {
U[0..u-1] T
p
return selection(U,k)}
if (kv)
return p;
else {
V[0..n-v-1] T
p
return selection(V,k-v)}
}
. , ...
//k>v
, 11 2013
13
:
: .
pivot
, O(n).
,
(
). ,
(n2).
:
. , ...
, 11 2013
14
:
: .
V
pseudomed(T[n]) {
int s=n / 5;
S[s];
for (i=1;i<=s;i++)
S[i]=adhocmed5(T[5i-4-1..5i]);
return selection(S,[(s+1) / 2])
}
adhocmed
(n).
. , ...
, 11 2013
15
:
: .
,
.
,
hardware.
,
;
!!
:
. , ...
, 11 2013
16
:
: .
: 4519
45
19
405
+45
855
:
,
hardware
. , ...
45
22
11
5
2
1
19
38
76
152
304
608
, 11 2013
19
-76
152
---608
855
17
:
: .
.
; .
,
:
n
u
n / 2
n / 2
, 11 2013
18
:
: .
V
long int mult(u,v:long int) {
n= u v
n;
if (n ) {
u v
return }
s = [n / 2];
w=[u / 10s];
x=u mod 10s;
y=[v / 10s]; z=v mod 10s;
return
mult(w,y) X 102s + (mult(w,z)+mult(x,y)) X 10s +
mult(x,z);
}
. , ...
, 11 2013
19
:
: .
.
r=mult(w+x,y+z);
p=mult(w,y); q=mult(x,z);
return 102sp+10s(r-p-q)+q
log 3
O(n 2 ),
O(n1.59)
. , ...
, 11 2013
20
:
: .
B nXn :
n
C n
n2 , o
(n3). ;
1960
Strassen
. , ...
, 11 2013
21
:
: .
I
22 :
a11 a12
A
a
a
21 22
b11 b12
A
b
b
21 22
:
m1=(21+22-11)(b22-b12+b11)
m2=11b11
m3=12b21
m4=(11-21)(b22-b12)
m5=(21+22)(b12-b11)
m6=(12-21+11-22)b22
m7=22(b11+b22-b12-b21)
. , ...
, 11 2013
22
:
: .
II
,
m2 m3
m m m m
2
4
7
1
m1 m2 m5 m6
m1 m2 m4 m5
7
A B
nXn,
2nX2n
nXn
.
(n2.81)
. , ...
, 11 2013
23