Professional Documents
Culture Documents
Algorithm Lec 13
Algorithm Lec 13
-13
: . //
.
.
www.emust.edu.mn
.
.
a[n] . a[i]=x
i .
i,
.
.
.
. x-
. a[i].key = x
I
. ,
Item
.
.
.
T(n) [i]=x
T(n)=c*n=O(n) .
,
,
.
2 .
1. a(i) = x
2.
.
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int i,n;
int index=-1;
n=17;
for (i=0;i<n;i++) {
cout<<a[<<i<<]=; cin >>a[i]; }
for (i=0;i<n;i++) {
if (a[i]==x) { index=i; break; }
}
return 0;
}
index -1
. x-
index i-
. index -1
0-
n-1-
index .
index -1
. x-
index i-
. index -1
0-
n-1-
index .
.
.
int LinearSearch (int a[],int x,int n)
{ for (int i = 0; i < n; i++)
if (a[i] == x) return i;
return -1;
}
x-
.
x
.
x x-
-
.
.
.
.
. a[k], 0<k<N a[k-1]<a[k]
x
- ;
- -
, -
-
.
2- .
L R
2 .
L=0; R=N-1; found = false;
while (L<R && ! found) {
m=L R-
if (a[m]==x) found = true;
if (a[m]<x) l=m+1; else r=m-1;
}
(L<R) && (a[k]: 0<k<L: a[k]<x ) && (a[k]: R<k<N: a[k]>x)
found
found || ((L<R) && (a[k]: 0<k<L: a[k]<x ) && (a[k]: R<k<N: a[k]>x))
.
M
.
.
.
log2N -
.
N/2 .
2 if .
.
.
.
log2N . .
L=0; R=N;
while (L<R) {
m=(L+R)/2;
if (a[m]<x) L=m+1; else R=m;
}
L<R . ?
R L-
. L<R . L,
R- m L<m<R . L,R- L-
m+1 R- m- L=R . L=R
. R=N
. a[R]
. a[R]=x
.
,
2- .
S p
.
.
. p[i][j] = a[k] : 0<k<j si+k = pk
:
i=-1;
do { i++;
found = P(i,M);
} while(found || (i=N-M))
P-
.
.
i = -1;
j=0;
do while {
while (j < M) & (s[i+j] = p[j]) {
(* P(i, j+1) *) j++ }
(* Q(i) & P(i, j) && ((j ==M) || (s[i+j] != p[j])) *)
while(j == M) || (i == N-M);
, ,
, , .
(pattern)
. .
()
.
, ,
. 2
.
, ,
i=0; j=0;
while(j < M) && (i < N)
{
/* Q(i-j) && P(i-j, j) */
WHILE (j >= 0) & (s[i] == p[j]) {j := D } ;
i++; j++;
}
, ,
, D
.
. Q(i-j) P(i-j, j)-
0<i<N 0<j<M .
.
i-j .
j=M P(i-M, M)-
P(i-j, j) i-M .
, ,
i = N j < M Q(i)
.
.
1. U.CS101 14
2. http://flowgorithm.org/documentation flowgorithm