6. , .[7]
, , .
:
.
. 13 . [6] :
a 5!:
. 13. .
.[6]
1. a + b. :
a + b =
2. , 1 (1, 1, 2, 3, 5, 8, 13, 21,). n-e :
(n)=
3. . XIX . 3 , . (1) (3), . , .
, , 1, Hanoy.pas.
, , , 64 . , , . , 64 , 58 . .
, . . , .
. 10 : 5 13 7 9 1 8 16 4 10 2. : 1 2 4 5 7 8 9 10 13 16.
. , , , . .
1- . 16 ( ), 2.
|
|
5 13 7 9 1 8 16 4 10 2
.
2- . . 13 ( ). 10.
5 13 7 9 1 8 2 4 10 16
.
3- . . ( 10) 4.
5 10 7 9 1 8 2 4 13 16
3 .
4- .
5 4 7 9 1 8 2 10 13 16
5- . , .
5 4 7 2 1 8 9 10 13 16
6- .
5 4 7 2 1 8 9 10 13 16
7- .
5 4 1 2 7 8 9 10 13 16
8- .
2 4 1 5 7 8 9 10 13 16
9- .
2 1 4 5 7 8 9 10 13 16
. 14. - . - 1, Vibor.pas.
. 14.
2. .
. 5 : 5 4 8 2 9. N-k+1, k - , I , N-k.
: .
I=1 5 4 8 2 9
>
I=2 4 5 8 2 9
<
I=3 4 5 8 2 9
>
I=4 4 5 2 8 9
<
9 .
: .
I=1 4 5 2 8 9
<
I=2 4 5 2 8 9
>
I=3 4 2 5 8 9
<
8 .
: .
I=1 4 2 5 8 9
>
I=2 2 4 5 8 9
<
5 .
: .
I=1 2 4 5 8 9
<
4 . 2 . N-1.
, . , ( ) .
. 15. - . 1, Puz.pas.
.
. , , , , . , , , , , , ( ). . . .
|
|
. 3. 10 .
. 15.
3.
1- . | 13 6 8 11 3 1 5 9 15 7 | 13. 6 , . 6<13, 6 . (6 13). |
2- . | 6 13 8 11 3 1 5 9 15 7 | 8 . 8>6 8<13, , . |
3- . | 6 8 13 11 3 1 5 9 15 7 | 11. , 11>8, 11<13. |
4- . | 6 8 11 13 3 1 5 9 15 7 | , , , 3 . |
5- . | 3 6 8 11 13 1 5 9 15 7 | 1 . |
6- . | 1 3 6 8 11 13 5 9 15 7 | 5>3, 5<6, 5 . |
7- . | 1 3 5 6 8 11 13 9 15 7 | 9 . |
8- . | 1 3 5 6 8 9 11 13 15 7 | 15. , . |
9- . | 1 3 5 6 8 9 11 13 15 7 | 7. |
1 3 5 6 7 8 9 11 13 15 | . |
- .16. 1, Vstavka.pas.
.16
.
.
, , . () A[k],,A[m] A[m+1],,A[q] A[k],,A[q], , (k m q). , , , D ( ) , . D , .
.
. 5 : 3 5 8 11 16, 8: 1 5 7 9 12 13 18 20. .
. 17.
1, Slianie.pas.
. . 1945 . . , , .[6, 10]
. .
. . . 1962 . , .
. ( ). , , , , , , , , .. : .
, . , , , .
|
|
.[6,10]
. 8 : 8 12 3 7 19 11 4 16. (7).
, : (4 3) 7 (12 19 11 8 16), 7 . .
: (3) 4 7 (12 19 11 8 16)
3 4 7 (12 19 11 8 16)
:
3 4 7 (8) 11 (19 12 16)
3 4 7 8 11 (19 12 16)
3 4 7 8 11 12 (19 16)
3 4 7 8 11 12 (16) 19
3 4 7 8 11 12 16 19
, . . [7]
Procedure QuickSort (m, t: Integer); {*m- , t .*}
Var i, j, x, w: Integer;
Begin
I:=m; j:=t; x:=A [(m+t) Div 2];
Repeat
While A[i] < x Do Inc (i);
While A[j] > x Do Dec (j);
If i<=j Then Begin w:=A[i]; A[i]:=A[j]; A[j]:=w;
Inc (i); Dec (j); End
Until i>j;
If m<j Then QuickSort (m, j);
If i<t Then QuickSort (I, t);
End;