.


:




:

































 

 

 

 





, . , - . :

 

 

:

;

( ).

 

nil , .

, , nil . () .

 

, - .

""

 

rel2=^elem2;

elem2=record

next:rel1;

prev:rel2;

data:< >

end;

list2=rel2;

var

l2:list2;

 

procedure insert2(pred:rel2; info:<>);

var

q:rel2;

begin

new(q); { }

q^.data:=info;

q^.next:=pred^.next;

q^.prev:=pred^.next^.prev;

pred^.next.prev:=q;

pred^.next:=q

end;

 

procedure delete2(del:rel2);

begin

del^.next^.prev:=del^.prev;

del^.prev^.next:=del^.next;

dispose(del);

end;

 

function search2(list:rel2; info:<>; var point:rel2):boolean;

var

p,q:rel2;

b:boolean;

begin

b:=false;

point:=nil;

p:=list;

q:=p^.next;

while (p<>q) and (not b) do

begin

if q^.data=info then

begin

b:=true;

point:=q

end;

q:=q^.next

end;

search2:=b

end;

 

...

...

...

 

var

l2:list2;

r:rel2;

begin { }

new(r);

r^.next:=r;

r^.pred:=r;

l2:=r;

 

...

...

...

 

end.

 

:

 

, , , l2, - .

:

 

 

 

- ( ), - .

, .

- , .

: , , ( ). ( ) pred , (l2).

(), , .

: 1- N-, N- 1-, 1- N- , . , .

, 1- N-, . :

 

var a,l1:list1;

begin

...

new(l1);

l1^.next:=nil;

a:=l1;

...

 

, .

 

. , . : , , . , N

 

a: array[0..N1] of Item

Item , . , x. i, [i].key = x, . , , , , Item .

: , (- ), , .

 

, , .

- .

.

- for while.

1/2*N , - 1 , - N .

 

- .

, .

""

 

var

nums:array[0..N] of real;

 

function search_s1(item:^real; n:integer; key:real):integer;

var

i:integer;

begin

for i:=0 to N do

if key=item[i] then

begin

search_s1:=i;

break

end

else

search_s1:=-1

end;

 

function search_s2(item:^real; n:integer; key:real):integer;

var

i:integer;

begin

i:=0;

search_s2:=-1;

while (key<>item[i]) or (i<n) do

begin

if key=item[i] then

search_s2:=i;

i:=i+1

end

end;

 

.

( 2): 1/2, 1/4, 1/8 .., . , . , , , .

, , ().

 

 

log2(N)+E ( E<0.0861) , " ". "".

 

""

 

function search_b(item:^real; n:integer; key:real):integer;

var

low,high,mid:integer;

begin

search_b:=-1;

low:=0;

high:=n-1;

while low<=high do

begin

mid:=(low+high)/2;

if key<item[mid] then

hig:=mid-1

else

if key>item[mid] then

low:=mid+1

else

search_b:=mid

end

end;

 

:

low, high, mid (, ) - . ;

.

 

. . . , , . N+1=Fk.

 

. , k kl kh, (l-k)(k-kl)/(kh-ki) li. .

 

, n/2 sqr(ni) log2(log2(N)) , .

 

: . log2(log2(N)) log2(N) N, () .

.

 

 

, , , .

, ( ) .

, , .

:

();

();

;

;

;

;

.

 

, - (); , ; - .

 

:

( , );

;

;

()?

, ;

.

 

. N.

 

, . .

 

: , (0). , .

 

 

. . , . "" .

 

""

 

var

str:array[0..M] of char;

 

procedure bubble(item:^char; n:integer);

var

a,b:integer;

t:char;

begin

for a:=1 to n-1 do

for b:=n-1 downto a do

if item[b-1]>item[b] then

begin

{}

t:=item[b-1];

item[b-1]:=item[b];

item[b]:=t

end

end;

 

procedure bubble1(item:^char; n:integer);

var

a,ssign,pass:integer;

t:char;

begin

ssign:=1;

pass:=0;

while ssign<>0 do

begin

ssign:=0;

pass:=pass+1;

for a:=0 to n-pass-1 do

if item[a]>item[a+1] then

begin

t:=item[a-1];

item[a-1]:=item[a];

item[a]:=t;

ssign:=1

end

end

end;

 

.

 

:

. N-1 , , .

d, c, a, b.

:

d, c, a, b

a, d, c, b

a, b, d, c

a, b, c, d

 

1/2*(N*N-N) . N-1 , N/2.

 

:

( );

3*N*(N-1)/4 ;

( ) 3*N*(N-1)/2 .

 

- N*N, N- . N, .

 

, . - - - - . , :

d, c, a, b

a, d, c, b

a, b, d, c

a, b, c, d.

 

. ( ), - . ., .

 

(, )

""

 

procedure insert(item:^char; n:integer);

var

a,b:integer; t:char;

begin

for a:=1 to n-1 do

begin

t:=item[a];

b:=a-1;

while (b>=0) and (t begin

item[b+1]:=item[b];

b:=b-1

end;

item[b+1]:=t

end

end;

 

d c a b

 

, . , N-1 , , 1/2*(N*N+N).

:

, :

: , , , , . .

. , .

 

 

:

, .

 

: , .

 





:


: 2016-10-06; !; : 787 |


:

:

.
==> ...

1483 - | 1413 -


© 2015-2024 lektsii.org - -

: 0.085 .