close

Вход

Забыли?

вход по аккаунту

?

Kursovaya Opsp

код для вставкиСкачать
???????????? ??????????? ? ????? ?????????? ?????????
??????????? ??????????????? ????????? ??????????????? ?????????? ??????? ????????????????? ???????????
?????-????????????? ??????????????? ??????????????? ???????? (??????????? ???????????)
???????: ????????? ?????? ? ?????????? ??????????????
????????? ?????????????? ?????????? ? ??????????
??????? ?????????? ???????
??????? ?????????? ?????? ??????????-???????????? ???????????????? ????? ?????????? ??????? ???????? ?????????? ??????????
????????????? ??????? ? ????????? ???????
???? ???????: ?????????? ??????. ?????. ??????. ??????????.
???????????
??????? ??.426 (???????, ????) ????????? ?.?,
????????????
?????? ???. ???? ? ? (???????, ????) ????? ?.?.
(??????)
?????????? ?????-????????????? ??????????????? ??????????????? ???????? (??????????? ???????????)
??????? ?????? ??????????????????? ?????????????? ? ??????????
???????
?? ?????????? ????? ????? ??????????-???????????? ????????????????
"?????????? ???????????? ??????????? ??? ?????????? ?????? ?? ????? ???????????????? ?++"
??????????? ?????????? 220000 "?????????? ? ??????????"
??????? ?????????? ??????????? ?????????? 220100 "????????? ?????? ? ??????????"
??????? ????????? ?????? ??????????
????: I ?????? 426
????: ?????????? ??????. ?????. ??????. ??????????.
???????? ????????, ?????????? ??????????:
1 ????????????? ?????
1.1????? ?????????? ?????? ????????? ????????????????
1.2?????????????? ?????? ?????? ????????? ????????????????
1.3???????????? ????? ?????? ????????? ????????????????
2 ???????? ?????. 2.1?????????? ??????
2.2??????????? ?????????????? ?????? ??????
2.3????????? ??????? ?????? ??????????? ???????
2.4?????????? ?????????? ???????? ??????? ??????? ??????
2.5??????? ??????
???????? ???????????? ???????????: Microsoft Windows 7, Microsoft Office 2007, Microsoft Visual Studio 2010
???????? ?????? ? ???????(?????????):
Intuit.ru
Wikipedia.org
????????.
?????????? - ???? ?? ????????? ???????? ????????? ??????, ??????????? ???????? ? ????????? ???? ???????????? ? ??????? ?????????????? ??????? ???????. ??? ??????????? ? ????? ?????? ????????? ?????????????? ??????? ???????? ?????????????? ??????? ?????? ????????? ??????.
???????????? ??????? ??????????? ????? ? ?????? ??????? ??????????? ? ?? ??????????? ????. ??????? ???? ? ????? ????? "?????????? ? ?????" ??????????, ??? ????????? ?????????? ???????? ???????? ??????? ?????????? ???? ????????? ????????? ?????? ?????????????? ???????. ????? ??????????? ??? ? ???? ???????? ????????:
* ????????? ?????????? ??????? ????? ??????? ??????????
* ????????? ?????????? ???????????? ????? ??? ??????????
* ???????????? ????????????? ????????? ??????????
??????? ???? ??????? ???????? ??????????? ? ??????? ?????????? ? ????? ????????? ????????? ?????? ? ???. ????? ????????????? ????? ?????????? ?????? ???????? ????? ????????? ??????, ??????? ???????????? ?? ????????? ?????????? ????? ? ?????? ?????, ????? ??? ?????????, ? ??? ???? ??? ???????????? ????? ?????? ? ?????????? ??? ??????????? ?? ???????? ?????????? ?????????. ???????? ????? ??????? ? ???????????? ??????? ????????? ??????? ???, ????????????? ?? ????????? ??????, ??????? ????? ???????????? ????????????? ??????????? ?????? ??? ????????? ? ??????? ???????? ??????.
1 ?????? ??????? ??????????
1.1 ???????? ?????? ??????? ??????????
? ????????? ????? ?????????? ???????? ?????????? ????? ????????? ???????? ??????????. ??? ??? ???????? ???????? ?????????? ??? ??????? ??????????. ?????????? ??????????? ?????????? ??????????, ??? ??????? ??? ?????????? ??????????? ??????? ?????????? ? ??????????? ??????, ? ??????? - ????? ? ??????????? ?????? ?????????? ?????????? ??? ??????. ?????????? ?????????? ????????? ????????? ????? ?????? ?, ??????????? ????? ???????? ?????? ??????????. ?????? ?? ??????? ?????????? ???????? ???????? ?? ??????? ??????????, ? ??? ???? ?????????, ??? ? ??? ??????? ????????? ?????????????? ????. ??????? ?? ?? ????? ??????????????? ?? ??????? ?????????? ? ?????????? ???????? ?????? ??????? ?????????? ??????????.
??? ?????? ????? ????????? ?? ?????? ???????? ??????:
* ?????????? ?????????
* ?????????? ?????????
* ???????? ??????????
* ?????????? ??????????? ??????
??? ?????? ???????? ? ???? ??? ????????? ??????? ?????????? ??????????, ? ????? ??? ????????? ???? ????????? ?? ??????????? ???? ?? ??????????????????. ?????? ????? ????????, ??? ?????? ???????? ?????? ????? ????? ????? ????????: ?????? ?????????? ????? ????? ????????????? ? ?????? ???? ?? ?????, ??? ??????? ???????????? ????? ????? ???????? ???????. ??????????? ????? ???????? ?? ???? ???????.
1.2 ?????????? ?????????
?????? ??????? ?? ??? ????? - ??????????????? ? ?????????????????. ? ?????? ?????? ? ??????????????? ????? ?????? ?????? ???? ?????? ???????. ???????? ?????????n-1 ??????, ?? ?????? ?? ??????? ?????????? ?????????? ???????? ?? ????????????????? ????? ? ??????????? ? ??????????????? ????? ????? ???????, ????? ?? ???????? ? ??? ??????????????? ?????????.
?? ????????? i-? ??????? ???????? a1, a2, ..., ai ?????????? ??????????????? ?????, ? ???????? ai+1, ai+2, ..., an - ?????????????????. ???? f(ai) = f(ai+1), ?? ??????? ai+1?????????? ? ??????????????? ?????. ? ????????? ?????? ???????? ai+1 ???????? ??????????? ? ?????????? s = ai+1, ? ??????? ai ?????????? ?? ???? ??????? ??????.
????? ???? f(s) ?????????? ???????????? ? ??????? ????????? ????????? ?? ??????????????? ????? ?????? ??????, ?.?. ? ??????? f(ak), k = i-1, i-2, ..., 1. ???? f(S) < f(ak), ?? ??????? ak ?????????? ?? ???? ???????, ??????. ? ????????? ?????? ??????? S ???????????? ? k+1-? ???????.
???????? ?????????? ???????? ????????? ????? ?????????, ???? ??? ?????? ??????? ???????? ai+1 ? ??????????????? ????? ???????????? ????? ????????? ??????, ??? ??? ???????? ???????????. ??? ????????? ????? ????? ????????? ?? O(n2) ?? O(n log2n), ?? ?????????? ???????????? ????????? ??? ???? ?? ??????????? ? ????? ??????? O(n2).
1.3 ?????????? ?????????
?????????? ????????? ???????? ???????? ??????? ???????? ??????????? ?????????? ? ????? ???????????? ? ???????? ???????????. ???? ???? ?????? ? ???? ?????? ????????? ?????? ??????? ??????????, ??????? ????????? ? ?????? ???????.
??? ???????? ??????? ? ?????? ??????? ?????????? ?????? ????????? ???????????. ????? ???? N?????????, ??????? ?????????? ???????????:
??????? ?? ????????. ????? ?????? ?????? ????? ???? ???? , ??????? ? ????????? ????????? ??????????. ?? ????????? ????????? a, b, c ???????? ??????????? " < ", ???? ???????, ??? ???????????:
1. ??????????? ?????? ???? ?? ???????????: a < b, a = b, b < a
2. ???? a < b ? b < c ?? a < c
??? ??? ???????? ?????????? ?????????? ?????????, ?????, ??? ????? ????????? ?????????, ?????????? ???? ????????????, ????????? ?????????? ???????????? ???????. ?????? ?????????? ??????? ? ???, ????? ??????????? ????? ? ??????? ??????????:
?????? ???????? ? ?????? ??????. ??? ????? ??????????? ? ???, ????? ?????????? ?????????? ?????? ??????? ??????? ?? ?????? ??????????? ?????????. ?? ????, ???? ?????? ????? ??????? j ??????, ?? ??? ????????? ? ??????? ?????? ?????? ???? j+1. ????????, ????? ??????? ????? ????????? ????? ?????????:
?? ????????, ??? ? ???? ????????? ???????? ????????? ???????, ? ??? ????? ??????????? ???:
??? ?????????? ??????? ????????? ????????????? ???????????? ?????????????? ??????? count[n]. ? ?????????? ????????????? ????????? ?????? ????? ?????????? ????????? count[j] + 1. ????, ???????? (?) ?????????? ??????? ???????? ???????? ???:
?_1. ?????????? count[1] .. count[N] ??????? 0
?_2. [???? ?? i] ????????? ??? ?_3 ??? i = N .. 2
?_3. [???? ?? j] ????????? ??? ?_4 ??? j = N .. 1
?_4. ???? , ?? ????????? count[j] ?? 1; ????? ????????? count[i]
???????, ??? ?????? ???????? ?? ??????????????? ???????????? ????? ???????. ? ??? ?? ???? ???????? ????? ?? ?????????? ??????? ???????, ?? ? ??????? ?? ????????? ??????? count[j] ????????? ???? ????? ????????? ??????? , ? ?? ???????, ??????? ????? ????????? ?? ????? . ????? ????????, ??? ???? ???????? ???? ????? ????????????? ???? ??????? ?????????? ?? ????? ?????????? ??????.
???????? ?????? ?????? ????????? ?????????? ????????.
???????? ?????????? - ??? ???????? ??? ???????????? ????????? ? ??????. ? ??????, ????? ??????? ?????? ????? ????????? ?????, ????, ???????? ????????? ???????, ?????????? ?????? ??????????. ?? ???????? ? ???????? ????? ????? ????????? ?????, ? ? ????????? ????? ???????? ?????-???? ??????, ????? ?? ???????? ?? ?????? ?????????.
????????? ?????????? ??????????? ?? ???????? ?????????? ? ????????????? ????????????? ??????:
* ????? - ???????? ????????, ??????????????? ?????????????? ?????????. ?????????? ????? ?????????????? ??????????. ??? ???????????? ????? ??????, ??????? ? ?????? ????????? ????????? ? ???????? ???????? ???????? ????????? A. ???? ?? ???? ????????? ???????? ????????? A, ?? ????????? n = |A|. ??? ????????? ????????? ??????? ????????? - ??? O(n log n) ? ?????? ????????? - ??? O(n2). ????????? ????????? ??? ???????????? - O(n). ????????? ??????????, ???????????? ?????? ??????????? ???????? ????????? ?????? ?????? ????????? ?? ??????? ???? ? O(n log n) ??????????. ??? ?? ?????, ?????????? ???????? ?????????? ???? (Yijie Han) ? ?????????????? ?????????? O(n log log n log log log n), ???????????? ??? ????, ??? ???????????? ?????? ?????????? (?? ??????????? ??????, ? ?? ? - ???????????? ?????????? ?????? ??????? ???????????, ??? ?????? ??????????? ??? ?????????? ? ???????????? ????????). ????? ?????????? ??????? ??????????? ?????. ???????????, ??? ????? ???????????? (????????, ??? ???????????? ??????????) ????????? ????????? ?????????, ????? ????????????? n ????? ?? O(log2 n) ????????. ??? ???? ????? n ?????? ???? ??????? ????????;
* ?????? - ??? ?????????? ??????? ????????? ?????????????? ?????? ??? ????????? ???????? ??????. ??? ???????, ??? ????????? ??????? O(log n) ??????. ??? ?????? ?? ??????????? ?????, ??????? ???????? ???????? ?????? ? ??????????? ?? ??????? ?????????????????? ???????, ????????, ?? ???????? ???? ????????? (??? ??? ??? ??? ??????????O(1)). ????????? ??????????, ?? ???????????? ?????????????? ??????, ??????? ? ??????????? ?? ?????.
???????? ? ?????????????.
* ???????????? (????. stability) - ?????????? ?????????? ?? ?????? ????????? ???????????? ????????? ? ??????????? ???????[3].
* ?????????????? ????????? - ????????????? ?????? ??? ????????? ??? ????????????? ??? ???????? ????????????? ??????. ???????? ????? ???? ???????????, ???? ????????? ??? ?????????????? ??????? ?????????????????? ? ???????? ?????.
* ????????????? ???????? ?????????. ?????????, ???????????? ??? ?????????? ????????? ????????? ????? ?????, ?????????? ??????????? ?? ??????????. ??????????? ???????????? ??????? ?????? ??? ???? ?????????? ?????????? O(n log n), ?? ??? ?????????? ????????? ??????????. ??? ??????????? ??????? (????? ??????) ?????????? ????? ??????????? ?????????.
??? ????? ?????? ????????? ????????? ???????? ??? ????? ??????????. ????? ???????? ????? ???????????? ???:
* ?????????? ?????????? ????????? ?????????, ??????? ????????????? ? ??????????? ?????? ? ???????????? ???????? ? ????? ??????. ?????? ?????? ??????????????? ?? ??? ?? ????? ??? ?????????????? ??????.
* ? ??????????? ???????????? ???????????? ??????????? ?????? ??????????? ???????? ? ??????????? ??????. ???????? ?????????? ?????? ?????? ?????????? ? ???????????? ??????????? ??????????? ? ????????.
* ??????? ?????????? ????????? ????????????? ???????????? ???????? ??????, ?? ?? ? ???????????? ????????, ? ???????????????? (???????????? ??????), ?. ?. ? ?????? ?????? "?????" ?????? ???? ???????, ? ??????? ?? ????????? ?? ????????? ? ??????? ???????????? ??????. ??? ??????????? ????????? ?????????????? ??????????? ?? ???????? ? ???????? ? ??????????? ??????? ????????????, ?????? ???????????? ?????????????? ???????? ????????????. ????? ????, ?????? ? ?????? ?? ??????? ?????? ???????????? ??????? ?????????, ??? ???????? ? ??????????? ???????.
* ?????? ? ???????? ?????????????? ???????????????? ???????: ? ?????? ?????? ??????? ????? ??????? ??? ???????? ?????? ???????, ????????? ?? ???????.
* ????? ?????? ?? ????????? ?? ???????????? ? ???.
????? ????????? ???????????????? ??:
* ??????????? ? ?????????????? ?????? ??? ?? ??????????
* ??????????? ? ??????? ? ????????? ??????, ????????? ?? ????? ???????? ?????????, ??? ?????????? ???????
?????? ?????????? ??????????.
????????? ?????????? ??????????
* ?????????? ??????? (Selection sort) - ????????? ?????????: O(n2); ????? ??????????? ??? ??????????? ???????? ? ????????? ??? ? ?????? ??? ????? ?????????????? ??????
* ?????????? ????????? (????. Bubble sort ) - ????????? ?????????: O(n2); ??? ?????? ???? ???????? ???????????? ?????, ???? ???????? ??????????? ?? ?? ???????.
* ?????????? ?????????????? (?????????, Cocktail sort, bidirectional bubble sort) - ????????? ?????????: O(n2)
* ?????? ?????????? - ????? ????? ? ??????????? ????????? ? ??????????? ?????????. ????????? ????????? - O(n2).
* ?????????? ????????? (Insertion sort) - ????????? ?????????: O(n2); ?????????? ??? ??????? ??????? ?????? ?????????? ? ????????????? ?????? ? ????????? ??? ????
* ?????????? ???????? (Merge sort) - ????????? ?????????: O(n log n); ????????? O(n) ?????????????? ??????; ??????????? ?????? ? ?????? ???????? ?????? ????????, ? ????? - ??????? ????????????? ??????
* ?????????? ? ??????? ????????? ?????? (????. Tree sort) - ????????? ?????????: O(n log n); ????????? O(n) ?????????????? ??????
* ???????? ?????????? Timsort (????. Timsort) - ????????? ?????????: O(n log n); ????????? O(n) ?????????????? ??????; ??????????????? ???????? (???????????? ?????????? ????????? ? ?????????? ????????. ?????????? ??? ????????????? ? ????? Python[4]
* ?????????? ????????? (Counting sort) - ????????? ?????????: O(n+k); ????????? O(n+k) ?????????????? ?????? (??????????? 3 ????????)
* ??????? ?????????? (????????? ??????????, Bucket sort) - ????????? ?????????: O(n); ????????? O(k) ?????????????? ?????? ? ?????? ? ??????? ??????????? ??????, ????????? ?? ????? ??????? "???????????" ? "????????".
?????????? ???????
?????????? ??????? (Selection sort) - ???????? ??????????. ????? ???? ?????????? ? ??? ?????????? ? ??? ????????????. ?? ??????? ?? n ????????? ????? ????? ?????????? ? ??????, ??????? ? ?????? ?????? T(n2), ??????????? ??? ????????? ???????? ?? ?????????? ?????.
???? ?????????:
1. ??????? ????? ???????????? ???????? ? ??????? ??????
2. ?????????? ????? ????? ???????? ?? ????????? ?????? ????????????????? ??????? (????? ?? ?????, ???? ??????????? ??????? ??? ????????? ?? ?????? ???????)
3. ?????? ????????? ????? ??????, ???????? ?? ???????????? ??? ??????????????? ????????
??? ?????????? ???????????? ????????? ?????????? ? ?????? 2 ??????????? ??????? ??????????????? ????????? ? ?????? ????????????????? ???????, ?? ????? ??????? ????????? ?????????.
?????? ???????????? ??????????:
template <class Item>
void selection(Item a[], int len) {
/* ??????? ????. i - ??????? ??????? ?????????????????? ???????? ?? ?????? ???????? */
for (int i = 0; i < len - 1; i++) {
int min = i; /* min - ??????? ???????????? ???????? */
/* ?????????? ????. ???? ?????? ??????? ?????? ??????? ???????? ????????????, ?????????? ??? ?????? ??? ??????????? */
for(int j = i + 1; j < len; j++) {
if(a[j] < a[min])
min = j;
}
if(min != i) /* ??????????? ??????? ?? ???????? ?????? ?????????????????, ????? ????? */
exch(a[i], a[min]);
}
}
???????, ?????? ?????? ?????????? ???????? ????????????.
?????????? ????????? ?????? ?? ?????????, ?????? ?? ??????? ????? ??? ????. ?????????? ???? ?? ??????? ????.
?????? ?? ??????????:
{ (2, a), (2, b), (1, a) }
??? ????? ?????? ???????? ???????? ????? ????? ????? ??????????????? ??????????????????:
{ (1, a), (2, b), (2, a) }
?????? ???????, ??? ???????? ???????????? ????????? (2, a) ? (2, b) ??????????. ????? ???????, ??????????????? ?????????? ???????? ????????????.
??? ??? ????? ??????? ??????? ?? ??????????? ????? ???????? ?????? ???? ?????, ?? ????? ????? ??????? ????? N-1, ??? ? N/2 ??? ??????, ??? ? ?????????? ?????????.
????? ???????? ?? ??????????? ????? ????? N-1 ???? ? ?????? ?????????? ???????? ??? ????????? ???????????????? ???????.
????????? ??????:
????? ????????? ? ???? ????? ????? (N-1)*N/2.
????? ????????? ? ?????????? ?????? (N-1)*N/2.
????? ????????? ????? ????????? ?????? N-1.
????????? ????? ????????? N2-1.
????? ??????? N-1.
????????? ??????:
????? ?????????? 10000 ???????? ????? ????? ?? ????? ? ??? ?? ??????????-?????????? ????????? ??????????? ??????? ????????? �40???., ? ??? ????? ?????????? ??????????? ????????? �30???.
????????????? ?????????? ?????? ???????? ??????? ????????, ????????? ????????? ?????? "????" ??? ????????? ?????????? ? ???????? ???????????? ????????.
?????????? ????? ??????????????? ??????? ?????????? ??????? ??????, ? ??????? ?? ?????? ??????? ???????????? ? ??????????????? ?? ???? ????? ? ???????????, ? ???????????? ????????.
?????????? ?????????
?????????? ???????? ????????, ???????�??? ????????�? (????. bubble sort) - ??????? ???????? ??????????. ??? ????????? ? ?????????? ???? ???????? - ??????????, ?? ?????????? ?? ???? ??? ????????? ????????. ????????? ?????????: O(n�).
???????? ????????? ??????? ? ??????????? ?? ??????????? ??? ??????? ??????????, ?????? ???? ?? ???????? ??????????? ????? ??????????? ????????? ??????????. ? ?? ?? ????? ????? ?????????? ???????? ????? ? ?????? ????????? ????? ??????????? ??????????, ????? ??? ????????? ??????????, ????????????? ?????????? ? ??????? ??????????.
????????
???????? ??????? ?? ????????????? ???????? ?? ???????????? ???????. ?? ?????? ?????? ???????? ??????????????? ???????????? ??????? ?, ???? ??????? ? ???? ????????, ??????????? ????? ?????????. ??????? ?? ??????? ??????????? N-1 ??? ??? ?? ??? ???, ???? ?? ????????? ??????? ?? ????????, ??? ?????? ?????? ?? ?????, ??? ???????? - ?????? ????????????. ??? ?????? ??????? ????????? ?? ??????????? ?????, ????????? ?????????? ??????? ??????? ???????? ?? ???? ????? ? ????? ??????? ????? ? ?????????? ?????????? ?????????, ? ?????????? ??????? ???????????? ?? ???? ??????? ? ?????? ??????? ("?????????" ?? ?????? ??????? ??? ??????? ? ????, ?????? ? ???????? ?????????).
?????????
????????? ??????????? ????????? (?????????? ??????????) ? ????? ????? ??????????? ?????? ????????.
?? ?????: ?????? A[N], ????????? ?? N ?????????, ? ?????????? ?? A[1] ?? A[N]
???? ??? J=1 ?? N-1 ??? 1 FOR J=1 TO N-1 STEP 1 ???? ??? I=1 ?? N-J ??? 1 FOR I=1 TO N-J STEP 1 ???? A[I]>A[I+1] ?? ????? A[I],A[I+1] IF A[I]>A[I+1] THEN SWAP A[I],A[I+1]
????????? I NEXT I
????????? J NEXT J
? ?????????? ????????? ?????????? ???????? ?? ?????????? ????? ??????????? ?? 1 ? ?????? ????????? ???????? ?????.
???? ??? ??????? ?????? (SWAP A[I],A[I+1]), ?? ?? ????? ???????? ????? ??????????? ????????????:
TEMP=A[I]
A[I]=A[I+1]
A[I+1]=TEMP
C????????: O(n�n), ?? ???????????.
????????? ??????:
* ????? ????????? ? ???? ????? ????? (N-1)*N/2.
* ????? ????????? ? ?????????? ?????? ????? (N-1)*N/2.
* ????????? ????? ????????? ????? (N-1)*N.
* ????? ???????????? ? ?????????? ?????? ????? (N-1)*N/2.
* ????? ??????? ????? (N-1)*N/2, ??? ? N/2 ??? ??????, ??? ? ?????????? ???????.
????????? ?????? (?? ???? ???????? ??? ??????????????? ??????):
* ????? ????????? ? ???? ????? ????? (N-1)*N/2.
* ????? ????????? ? ?????????? ?????? ????? (N-1)*N/2.
* ????????? ????? ????????? ????? (N-1)*N.
* ????? ??????? ????? 0.
??????????? ??????? ????????? ??????????? ? ?????????: ????? ??????? ?????????? ??????????? ????? ???????????? ??????? ??????? ?????? ????????? ?? N-?? ???????. ??? ?????? ???????, ????????? ?? ???????? ???????????? ??????? ????????? ?? N-1 ?????. ? ??? ?????. ????? ???????, ?? ?????? ????????? ??????? ????? ?????????????? ????????? ??????????? ?? 1 ? ??? ????????????? "????????" ???? ?????? ?? ?????? ?? ????? ?????? ???.
??? ??? ????????? ?? ?????? ???????? ?? ????????? ? ??????????, ?? ??? ?????????? ????????? ?????? ?? ????? N-1 ???????? ???????? ?????. ??????? ? ????????? ??????????? ??????? ???? ?????? ??????????? ????? N-1 ? ?? ?????????????, ???? ??? ?? ???? ?????? ?? ?????? ????????.
???????? ?????????? (?????? F) ????????????? ???????????? ?? ?????????? ????? ??????? ????????? ????? ?????? ???????? ? ??????? ? ???????? ???????????????? ????????? ?? ?????. ????? ?????? ???????? ?? ??????????? ????? ?????? ???????????? ? 0, ? ????? ????????????? ????????????? ?????? ??????????????? ? 1. ???? ????? ?????? ?? ??????????? ????? ?????? ????? 0, ?? ??????? ?? ????, ?? ???? ?????? ???????????? ? ????? ???????? ????? ?? ????????? ??????????.
????????? ??? ????? ??????????? ????????? ? ????????? ????????????? ???????????? ??????? ?? ?????????? ?????.
?? ?????: ?????? A[N], ????????? ?? N ?????????, ? ?????????? ?? A[1] ?? A[N]
???? ??? J=1 ?? N-1 ??? 1 FOR J=1 TO N-1 STEP 1
F=0 F=0 ???? ??? I=1 ?? N-J ??? 1 FOR I=1 TO N-J STEP 1 ???? A[I] > A[I+1] ?? ????? A[I],A[I+1]:F=1 IF A[I]>A[I+1] THEN SWAP A[I],A[I+1]:F=1
????????? I NEXT I ???? F=0 ?? ????? ?? ????? IF F=0 THEN EXIT FOR
????????? J NEXT J
? ?????? ?????????? ?????? ?? ?????????? ? ???? ????????? ???????? ???? ?????????? ?????? ??? ???????.
????????? ?????? (?? ??????????):
* ????? ????????? ? ???? ????? ????? (N-1)*N/2.
* ????? ????????? ? ?????????? ?????? (N-1)*N/2.
* ????????? ????? ????????? ????? (N-1)*N.
* ????? ???????????? ? ?????????? ?????? ????? (N-1)*N/2.
* ????? ??????? ????? (N-1)*N/2.
????????? ?????? (??????????):
* ????? ????????? ? ???? ????? ????? (N-1).
* ????? ????????? ? ?????????? ?????? (N-1).
* ????????? ????? ????????? ????? 2*(N-1).
* ????? ??????? ????? 0.
????? ?????????? 10000 ???????? ????? ????? ?? ????? ? ??? ?? ??????????-?????????? ????????? (???????? ????????? �3.4???, ?????? �2.3???) ??????????? ??????? ????????? �40???., ??? ????? ?????????? ??????????? ????????? �30???, ? ??????? ??????????? �0,027???.
O(n�n) ??????, ??? O(n�log(n)) ? ?????????? ????????, ?? ??? ????? n ??????? ?? ????? ???????, ? ??????????? ??? ????? ?????, ??????? ?????? ????????? ?????????? ?????????? ????????? ??? ????????? ????? ? ????????? ????? ??????????? ?? ????????????? ? ??????????????? ???????.
???????? ????? ??????? ????????, ?????? ?????????:
* ?????????? ???? ????? ?????????????? ???, ????? ?? ?????????? ???????????? ?????? ?? ? ??????, ?? ? ?????. ???????????????? ????? ??????? ???????? ????????????????????? ?????????????? ??? ????????? ???????????. ????????? ??? ???? O(n�n) ?? ???????????.
? ?????????? ?????????, ??? ?????? ??????? ?? ??????????? ?????, ????? ???????? ??????????? ?????????? ???????????? ???????? ? ????????? ??? ? ?????? ???????, ?? ???? ?????????? ????????? ?????????? ????????? ? ?????????? ???????, ??? ???? ????? ???????? ?? ??????????? ????? ??????????? ?????, ?? ????? ??? ????? ????????????? ????? ????????? ? ??????????? ???? ????? ????? ??????? ??????? ?? ??????????? ?????.
????????? ????????????? ????????? ?????????? ????????? ? ?????????? ??????? (?????????? ??????????):
FOR J=1 TO N-1 STEP 1
F=0
MIN=J
FOR I=J TO N-J STEP 1 IF Y[I]>Y[I+1] THEN SWAP Y[I],Y[I+1]:F=1
IF Y[I]<Y[MIN] THEN MIN=I
NEXT I
IF F=0 THEN EXIT FOR
IF MIN<>J THEN SWAP Y[J],Y[MIN]
NEXT J
[???????]?????? ?????? ?????????
??????? ?????? ? ??????? "5 1 4 2 8" ? ??????????? ???????? ?? ???????????, ????????? ?????????? ?????????. ???????? ?? ????????, ??????? ???????????? ?? ?????? ?????.
?????? ??????:
(5 1 4 2 8) (1 5 4 2 8), ????? ???????? ?????????? ??? ?????? ???????? ? ?????? ?? ???????.
(1 5 4 2 8) (1 4 5 2 8), ?????? ???????, ??? ??? 5 > 4
(1 4 5 2 8) (1 4 2 5 8), ?????? ???????, ??? ??? 5 > 2
(1 4 2 5 8) (1 4 2 5 8), ??????, ????? ????, ??? ???????? ????? ?? ????? ?????? (8 > 5), ???????? ?? ?????? ?? ???????.
?????? ??????:
(1 4 2 5 8) (1 4 2 5 8)
(1 4 2 5 8) (1 2 4 5 8), ?????? ???????, ??? ??? 4 > 2
(1 2 4 5 8) (1 2 4 5 8)
(1 2 4 5 8) (1 2 4 5 8)
?????? ?????? ????????? ????????????, ?? ???????? ?? ????? ??? ?? ???. ??????? ??? ?????????? ??????? ?????? ?????? ? ??????????, ??? ???????????? ????????? ?? ????.
?????? ??????:
(1 2 4 5 8) (1 2 4 5 8)
(1 2 4 5 8) (1 2 4 5 8)
(1 2 4 5 8) (1 2 4 5 8)
(1 2 4 5 8) (1 2 4 5 8)
?????? ?????? ???????????? ? ???????? ????? ???? ????????.
?????????? ??????????????
?????????? ?????????????? (????????? ??????????) (????. Cocktail sort) - ????????????? ??????????? ??????????. ?????????? ????? ??????????? ?????????? ????? ???????? ??? ??????????????.
??-??????, ???? ??? ???????? ?? ????? ??????? ???????????? ?? ??????????, ?? ??? ????? ??????? ??? ????????????? ?, ?????????????, ?? ????? ????????? ?? ????????????.
??-??????, ??? ???????? ?? ????? ??????? ? ?????? ??????????? ??????? "?????????" ?? ?????? ???????, ? ???????????? ??????? ?????????? ?????? ?? ???? ??????? ??????.
??? ??? ???? ???????? ? ????????? ???????????? ? ?????? ??????????? ??????????. ??????? ??????? ????? ??????? (?.?. ????? ???????, ??? ?????????? ????????)??????????????? ? ????? ?????????? ?????? ?? ?????? ????????. ?????? ??????????????? ?????????? ?????? ?????? ? ????? ???????.
?????? ?????? ??? ???? ?????????? - ??????????????? ?????? (?(n)), ?????? - ??????????????? ? ???????? ??????? (O(n�)).
?????????? ????? ????????? ? ????????? ??????-?????????? C=N-1. ??? ????????????? ????????????? ??????? ?? ?????????????? ??????? (?????? ??????)
??? ????????? ?? ????? ???????????????? ?++
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#pragma hdrstop
#pragma argsused
// ??????-??????????
int main(int argc, TCHAR* argv[])
{
const int Count = 10;
int TestArr[Count] = {3,1,5,8,1,0,6,4,6,7};
ShakerSort(TestArr,1,Count);
ArrayOutput(TestArr,0,Count);
return 0;
}
//???????? ??????? i-? ? i-1-? ???????? ??????? Arr
void Swap(int Arr[], int i)
{
int temp; //?????
temp = Arr[i];
Arr[i] = Arr[i-1];
Arr[i-1] = temp;
}
void ShakerSort(int Arr[], int Start, int N)
{
int Left,Right; //??????? ??????????
int Last; //????? ????????? ????????????
Left=Start;
Right = N-1;
Last = N-1;
do
{
//???????? ? ????? ??????? "?????? ????????"
for (int i =Right; i >= Left; i--)
{
if (Arr[i-1]>Arr[i])
{
Swap(Arr, i);
Last = i; //????????? ????? ????????? ????????????
}
}
Left = Last + 1;
//???????? ? ?????? ??????? "??????? ????????"
for (int i =Left; i <= Right; i++)
{
if (Arr[i-1]>Arr[i])
{
Swap(Arr, i);
Last = i; //????????? ????? ????????? ????????????
}
}
Right = Last - 1;
}
while (Left<=Right);
}
//????? ????????? ??????? ?? ???????
void ArrayOutput(int* Arr, int Start, int N)
{
for (int i = 0; i < N; i++)
{
cout << Arr[i] << '\n';
}
getch();
}
??????????? ?????????
3 1 5 8 1 0 4 6 6 73 1 5 8 0 1 4 6 6 73 1 5 0 8 1 4 6 6 73 1 0 5 8 1 4 6 6 73 0 1 5 8 1 4 6 6 70 3 1 5 8 1 4 6 6 7 Left=10 1 3 5 8 1 4 6 6 70 1 3 5 1 8 4 6 6 70 1 3 5 1 4 8 6 6 70 1 3 5 1 4 6 8 6 70 1 3 5 1 4 6 6 8 70 1 3 5 1 4 6 6 7 8 Right=80 1 3 1 5 4 6 6 7 80 1 1 3 5 4 6 6 7 8 Left=30 1 1 3 4 5 6 6 7 8
????????? ???????????? ??????????
* ?????????? ??????? (Selection sort) - ????????? ?????????: O(n2); ????? ??????????? ??? ??????????? ???????? ? ????????? ??? ? ?????? ??? ????? ?????????????? ??????
* ?????????? ????? (Shell sort) - ????????? ?????????: O(n log2 n); ??????? ???????? ?????????? ?????????
* ?????????? ????????? (Comb sort) - ????????? ?????????: O(n log n)
* ????????????? ?????????? (?????????? ????, Heapsort) - ????????? ?????????: O(n log n); ?????????? ?????? ? ????, ????? ?????????? ??????? ? ????????? ??? ? ????? ??????
* ??????? ?????????? (Smoothsort) - ????????? ?????????: O(n log n)
* ??????? ?????????? (Quicksort), ? ???????? ? ???????????? ????????? ?????? - ????????? ?????????: O(n log n) - ??????? ?????, O(n2) - ?????? ??????; ?????? ???????? ??? ?????????? ?? ????????? ??? ???????????? ??????? ????????? ???????; ? ?????????? ????????? ?????? ?????? ?? ??? ???????? ???, ??? ????? ??????? ?????? ???????? ?????????? ???????????? ?????? ???????? ?????? ????????; ????? ???????? ??????????? ?????????? ? ?????? ????????. ??? ????????????? O(n) ?????????????? ??????, ????? ??????? ?????????? ??????????.
* Introsort - ????????? ?????????: O(n log n), ????????? ??????? ? ????????????? ??????????. ????????????? ?????????? ??????????? ? ??????, ???? ??????? ???????? ????????? log(n).
* Patience sorting - ????????? ?????????: O(n log n) - ????????? ??????, ??????? ????????????? O(n) ??????, ????? ??????? ????? ??????? ??????????????? ?????????????????????
* Stooge sort - ??????????? ???????? ?????????? ? ????????? ?????????? .
* ??????????? ?????????? - ????????? ?????????: O(n�k); ????????? O(k) ?????????????? ??????.
* ???????? ?????????? - ?? ??, ??? ? ??????????? ??????????.
?????????? ?????
?????????? ????? (????. Shell sort) - ???????? ??????????, ?????????? ??????????????????? ????????? ?????????? ?????????. ???? ?????? ????? ??????? ? ????????? ?????????, ??????? ?? ?????? ?????, ?? ? ?? ???????????? ?????????? ???? ?? ?????. ????? ??????? - ??? ?????????? ????????? ? ???????????????? "???????" ?????????. ??????????? ????? ?????????????????? ??????????? ?????????? ?????????? ?????????? ?????????.
??? ?????????? ????? ??????? ???????????? ? ??????????? ????? ????? ????????, ????????? ???? ?? ??????? ?? ????????? ?????????? (? ?????? ???????? ??. ????). ????? ????? ????????? ??????????? ??? ????????? ??????? ???????? , ? ??????????? ?????????? ????? ??????????????? ????????? ??? (?? ???? ??????? ??????????? ?????????). ????????????? ?????????? ????? ? ???????????? ??????? ?????????????? ???, ??? ???????? "???????" ?????? ?? ???? ????? (? ??????? ??????? ??????????, ????????, ???????????, ?????? ???????????? ???? ????????? ????????? ?????????? ???????? ? ?????? ???????? ?? 1, ? ??? ?????????? ????? ??? ????? ????? ???? ??????).
???????? ?? ??, ??? ?????????? ????? ?? ?????? ??????? ?????????, ??? ??????? ??????????, ??? ????? ??? ???????????:
* ?????????? ??????????? ? ?????? ??? ????;
* ?????????? ?????????? ??? ????????? ??????? ?????? - ??????? ?????????? ????? ??????????? ?? O(n�), ??? ????, ??? ?????? ??????????????? ????? ??? ?????????? ?????.
??????
????? ??? ?????? ? ??????????? ??? ?????????? ??????? ?????, ? ? ???????? ???????? ??????? .
?? ?????? ???? ??????????? ????????? , ???????????? ?? ???? ????????? , ????????????? ?? 5 ???????, ?? ???? ????????? , , , , .
? ?????????? ?????? ?? ?????? ???? ????? ??????????? ????????? ?? ????????? ?? 3 ??????? ?????????.
??????? ??????????? ??????? ??????????? ????????? ????????????? ??????.
????? ????? ???????????
??????? ????? ?????? ????????? ??????? ?? ???? ??????????? - , ?? ??????? ????? ?????????? ??????????? ???????? ????????? ??????? ???????? ?? ?????? ???? ?????????. ?????????? ????????? ???????? ? ?????? ???? ????????:
* ????????????? ???????????? ?????? ?????????????????? ???? ???????????: ? ?????? ??????, ????????? ????????? ???????? ;
* ???????????? ????????? ??????????????????: ??? ???????? ; ????? ?????????????????? ????? ???????? ? ????????? ?????????? ;
* ???????????? ????????? ??????????????????: , ???? i ?????? ? , ???? i ????????. ??? ????????????? ????? ?????????? ??????? ????????? ????????? ??????????: , ? ? ?????? ?????? ??????? . ??? ????????????? ??????? ???????? ??????? ???????????? ?? ???????? inc[s-1], ???? 3*inc[s] > size.[1];
* ???????????? ??????? ??????????????????: ??? ???????? ; ? ????? ?????? ????????? ????????? ?????????? ;
* ???????????? ?????????????????? ??????? ????? (?????????????????? A102549 ? OEIS): ; ???????? ????? ?? ?????? ??? ?????????? ??????? ???????? ?????????????? ?? 4000 ?????????.[2];
* ???????????? ??????????????????, ?????????? ?? ?????? ?????????: ;
* ??? ???????? , ; ????? ?????????????????? ????? ???????? ? ????????? ?????????? .
?????????? ?????????
?????????? ????????? (????. comb sort) - ??? ???????? ?????????? ???????? ??????????, ?????????? ???????????????? ??????????? ???????????? ? 1980 ?. ??????? ?? ??? ?????????? ? ????????????? ? ?????? ??????? ????? ? ??????? ????? ? ??????? Byte Magazine ? ?????? 1991 ?[1]. ?????????? ????????? ???????? ?????????? ?????????, ? ??????????? ? ???????????, ????????? ??????? ??????????. ???????? ???? - ????????? ???????, ??? ????????? ???????? ? ????? ??????, ??????? ?????? ????????? ?????????? ????????? (???????, ??????? ???????? ? ?????? ??????, ?? ???????????? ???????? ??? ?????????? ?????????).
? ?????????? ?????????, ????? ???????????? ??? ????????, ?????????? (?????????? ???? ?? ?????) ????? 1. ???????? ???? ?????????? ????????? ? ???, ??? ???? ?????????? ????? ???? ??????? ??????, ??? ??????? (?????????? ????? ????? ???????? ?? ???? ????, ?? ??? ???????? ???????????? ?????????? ?????????, ? ?? ?????????? ?????????).
?????????? ?? C++
void sort( data *array, dword size )
{
if (!array || !size)
return;
dword jump = size;
bool swapped = true;
while (jump > 1 || swapped)
{
if (jump > 1)
jump = (dword)(jump / 1.25);
swapped = false;
for (dword i = 0; i + jump < size; i++)
if (array[i] > array[i + jump])
swap(array, i, i + jump), swapped = true;
}
}
??????? ??????????
??????? ?????????? (????. quicksort), ????? ?????????? qsort ?? ????? ?????????? ? ??????????? ?????????? ????? ?? - ?????? ????????????????? ??????????, ????????????? ?????????? ???????????? ???????? ?????? ? ??? ? 1960 ????. ???? ?? ??????? ????????? ????????????? ?????????? ?????????? ???????? (? ??????? O(n log n) ??????? ??? ???????????? n ?????????), ???? ? ??????? ??? ???????????.
??????? ???????? ?????????
* ??????? ???????, ?????????? ???????.
* ???????? ??? ????????? ???????? ? ???????, ?? ????????? ????????? ??????? ????????? ?? ??? - "??????? ????????", "??????" ? "???????", ??????????? ?? ? ??????? ???????-??????-???????.
* ????????? ?????????? ??? "???????" ? "???????".
??????????: ?? ???????? ?????? ????????? ??????????? ????????? ?? ?? ???, ? ?? ??? ?????: ????????, "??????? ????????" ? "?????? ? ???????". ????? ?????? ? ????? ?????? ??????????? ???????????, ??? ??? ??? ????????????? ?????? ?????????? ?????????? ?????? ??????? ?? ???????????? ????????? ? ???????????? ?????? ???? ????????? ????????? ?????????.
[???????]????????
??????? ?????????? ?????????? ????????? "???????? ? ????????". ???? ????????? ??????:
1. ???????? ? ??????? ????????? ???????, ??????? ????? ???????? ??????? ?????????. ? ????? ?????? ???????????? ????????? ????? ???????? ???????? ???????????. ? ????? ?????? ????????? ????????????? ????????? ?????????? ?????? ???????, ?? ??? ?????????????? ???????? ? ??????????? ?????? ?? ?????? ?????????? ????????. ????????? ?????????: ???????? ????????? ???? ? ??? ?? ???????, ????????, ??????? ??? ????????? ?? ?????????; ???????? ??????? ?? ???????? ????????? ????????.
2. ???????? ?????????? ???????: ???????????? ?????? ????? ???????, ????? ??? ????????, ??????? ??? ?????? ???????? ????????, ????????? ????? ?? ????, ? ??? ????????, ??????? ???????? - ?????? ?? ????. ??????? ???????? ????????:
1. ??? ??????? - l ? r, ?????????????? ? ???????????? ? ????????????? ??????? ???????????? ??????? ??????????????.
2. ??????????? ?????? ???????? ???????? m.
3. ?????? l ??????????????? ????????????? ?? ??? ???, ???? l-? ??????? ?? ???????? ?????? ???? ????? ????????.
4. ?????? r ??????????????? ??????????? ?? ??? ???, ???? r-? ??????? ?? ???????? ?????? ???? ????? ????????.
5. ???? r = l - ??????? ???????? ??????? - ???????? ?????????? ?????????, ??? ??????? ????????? ?? ??????? ???????.
6. ???? l < r - ????????? ???? ????????? ????? ???????? ??????? ? ?????????? ???????? ?????????? ? ??? ???????? l ? r, ??????? ???? ??????????. ??????? ??????, ??? ???? ?????-???? ??????? (l ??? r) ????? ?? ???????? ????????, ?? ??? ?????? ???????? m ?????????? ?? r-? ??? l-? ??????? ??????????????.
3. ?????????? ????????????? ??????????, ??????? ????? ? ?????? ?? ???????? ????????.
4. ????? ???????? ???????? ??????, ????????? ?? ?????? ??? ???? ?????????. ?????? ???????????? ? ???????? ????, ?? ??????, ??? ?????????????, ?????????? ???????? ? ???????????? ???? ?????????. ??? ????? ??????? ??? ??????????? ? ???????? ??????????.
????????? ? ?????? ???????? (?? ?????? ????????? ?????? ????????) ????? ??????????????? ??????? ??????? ???????????, ?? ??????? ????, ?? ???????, ???????????? ????? ???????? ????? ?????????? ?????? ? ????????? ?????????????? ??????????.
?????????, ??? ???? ?????????? ???? ????? ????????????? ? ????????? ????????: ???? ? ???, ??? ? ?? ????? ??????? ???????? ?? ????????? ?????, ? ???? ??????????? ??? ????? ? ??????, ?? ???????? ????? ???????? ?? ???? ?????? ?????. ???????? ??? ???????? ?????? ?? ????? ??? ?????????? ? ????????? ?????, ??? ?? ???????? ? ?????????? ????????????????????????? ???????? ? ????????? ??????????? ??????-??????????? ????????????.
//???????? ?? ????? java public static void qSort(int[] A, int low, int high) {
int i = low;
int j = high;
int x = A[(low+high)/2];
do {
while(A[i] < x) ++i;
while(A[j] > x) --j;
if(i <= j){
int temp = A[i];
A[i] = A[j];
A[j] = temp;
i++; j--;
}
} while(i < j);
if(low < j) qSort(A, low, j);
if(i < high) qSort(A, i, high);
}
//???????? ?? ????? pascal
//??? ?????? ?????? 2-?? ???????? ?????? ???? ????? 1
//3-?? ???????? ?????? ???? ????? ????? ????????? ??????? procedure qSort(var ar:array of real; low,high:integer);
var i,j:integer;
m,wsp:real;
begin
i:=low;
j:=high;
m:=ar[(i+j) div 2];
repeat
while(ar[i]<m) do i:=i+1;
while(ar[j]>m) do j:=j-1;
if(i<=j) then begin
wsp:=ar[i];
ar[i]:=ar[j];
ar[j]:=wsp;
i:=i+1;
j:=j-1;
end;
until (i > j);
if(low<j) then qSort(ar,low,j);
if(i<high) then qSort(ar,i,high);
end;
//???????? ?? ????? Visual Basic
//??? ?????? ?????? 2-?? ???????? ?????? ???? ????? 1
//3-?? ???????? ?????? ???? ????? ????? ????????? ??????? Sub qSort(ByVal ar() As double,ByVal low As Integer, ByVal high As Integer)
Dim i, j As Integer
Dim m, wsp As double
i = low
j = high
m = ar((i + j) \ 2)
Do Until i > j
Do While ar(i) < m
i += 1
Loop
Do While ar(j) > m
j -= 1
Loop
If (i <= j) Then
wsp = ar(i)
ar(i) = ar(j)
ar(j) = wsp
i += 1
j -= 1
End If
Loop
If (low < j) Then qSort(ar,low, j)
If (i < high) Then qSort(ar,i, high)
End Sub
?????? ?????????????
QuickSort ???????? ??????????? ?????????? ????????? ????????? ?????????? ? ??????? ??????? ?????? (??? ???????? ???????? ??? "??????????? ??????????" ? "????????? ??????????"), ??????????, ? ??? ?????, ????? ?????? ??????????????. ?????????????? ??????? ??????? ? ???, ??? ????? ??????? ??????? ???????? ??????? ?? ??? ??????????? ??????. ?????????? ????: ????????? ?????? ?????????????? ??????? ?????? ?????????? ???? ? ?????????? ??????????? ?????????? ?????.
* ?????? ??????. ??? ????? ????????? ????? ?????? ?????? - ???? ? ?????? ???????? ?????? ?? ??????????? ??????? ?? ?? ??? ?????? ?? ???????? ???????. ? ?????????? ?????????? ?????????, ???????? ??????? ???????????, ???? ?? ????? ???????? ???????????? ????????? CN = 2CN/2+N, ??? ? ????? ????????? ???? ???????? N lg N ?????????. ??? ???? ?? ?????????? ????? ??????????.
* ???????. ???? ? ??????? O(n log n) ??????? ??? ???????????? n ?????????. ? ?????????? ?????? ????? ???????? ?????? ????? ????? ??? ????????? ??????? ????????? ? ?????? ???????? ???????? ?? ???????? ??????? ???? ????????.
?? ???????? (? ??????, ????? ?????? ???????? ????? ????????? ?????????, ??? ?????????) ??????? ?????????? ??????????? ???????, ??? ?????? ????????? ? ??????? O(n lg n), ?? ??????? ????, ??? ?????????? ???? ????????? ????? ???? ?????????? ?????????? ????? ?? ????? ???????????. 2CN/2 ????????? ??????? ?? ?????????? ???? ?????????? ???????????; N - ??? ????????? ????????? ??????? ????????, ????????? ???? ??? ?????? ?????????. ???????? ?????, ??? ????????? ???????? ????? ????????? ????? CN = N lg N.
* ?????? ??????. ?????? ???????, ????????, ????? ?????, ??? ??????? ?? ?????? ????? ?????? ????? ??????????? ?? ??????????? ????????? ?? ?????? ???????? ???????? ? ?? ????????? ?? ???? ????????? ?????????. ????? ????? ?????????, ???? ? ???????? ???????? ?? ?????? ????? ????? ?????? ??????? ???? ??????????, ???? ?????????? ?? ???? ??????????????.
?????? ?????? ???? O(n�) ???????. ?? ?????????? ??????? ?, ??????????????, ????? ?????? - ??? ?? ????? ??????? ??? ??????????. ???? ??, ??? ? ????? ?????? ??????? ???????? ??? ?????????? ????????? ????????? n, ??? ????? ???????? n-??????? ?????????? ?????? ???????? ? ????????? ?????????? ????????? ?????????? ????????. ??? ??????? ???????? n ?????? ?????? ????? ???????? ? ?????????? ?????? ?? ????? ?????? ?????????. ???????, ?? ??????????? ???????? ?????? ????? ????? ???????, ??????? ???????????? ??????????? ????, ??? ??????????? ???????????? ?????.
?????????
* ??? ?????? ???????? ???????? ?? ??????? ????????? ????????? ??????? ?????? ?????? ?????????? ????? ????????????? ? ????????? ????? ?????????? ????????? ?????????? - O(n lg n).
* ???????? ??????? ????????? ??????? ?? ???? (???????, ???????? ? ?????????? ?????????). ????? ????? ????? ????????? ?????? ??????? ??????.
* ?? ????????? ?????????? ??????? ??????? ???????? ? ?????? ?????? (??? ??? ??????????? ? ????) ???????? ??????????? ?????????, ??????????? ???? ????? ????????: ?????? ????, ????? ????? ?????????? ??????? ???????? ?????????? ????????? ?????????? ??? ????? ????????? ???????????, ??????????? ????? ???????? ?????? ??? ???????? ??????????, ? ??????? ?????????????? ? ????? ? ???????? ????? ?? ?????? ?????????. ? ????? ?????? ????????????? ? ??????? ?????? ??????? ??????????? ???: ????????? ??????? ?? ?????????????? ??????????? ????? ? ?? ??????????? ????????? ???? ??????????? ? ????? - ???????? ?????? ???????. ???? ??????? ???????? ?? ??? ????? ??????????????? ?? ???????? log2n, ? ? ?????? ?????? ???????????? ?????????? ??? ?????? ????? ?? ????? 2 - ??? ????????? ??????? ? ????? ??????? ?????? ????????.
* ????????? ?????? ?? ?? ???, ? ?? ??? ????? (??. Dual Pivot Quicksort).
??????????? ? ??????????
???????????:
* ???? ?? ????? ????????????????? (?? ????????) ?? ?????????? ?????????? ?????????? ?????? ??????????.
* ????? ? ??????????.
* ??????? ???? ?????????????? ?????? ??? ????? ??????. (?? ?????????? ??????????? ???????? ? ?????? ?????? ??????)
* ?????? ?????????? ? ??????????? ??????????? ? ??????????? ??????.
* ?????????? ??????????? ??????????? (???????? ????????) ??? ?????????? ????? - ??????? ????????? ? ??????? ????????? ?????? ?? ???????? ??????? ??????, ????? ?????????? ??????????? ?????????? ??? "????????" ? "????????" ???????? ???? ?? ???????? ???????, ? ??? "???????" ??????? ?? ??? ??????? ???????.
* ???????? ?? ????????? ??????? ? ?????? ?????????? ? ???????????????? ????????.
??????????:
* ?????? ??????????? ?? ???????? (?? ) ??? ????????? ??????? ??????? ?????????, ??? ????? ????????? ??? ????????? ??????? ??????. ????? ????? ????????, ????????? ????? ??????????? ?????????, ??? Introsort, ??? ????????????, ??????? ??????? ??????? ????????, ? ?? ????????????? ???????.
* ??????? ?????????? ????????? ????? ???????? ? ?????? ???????????? ?????, ??? ??? ?? ????? ????????????? ??????? ????????? ??????????? ???????. ? ?????????? ???????????, ? ??????? ??????????? ????? ?????????? ?????? ??? ?????????? ??????? ?? ???? ?????? ???????, ??????? ???????? ?????????????? ?? ???????? .
* ?????????? - ???? ????????? ????????????, ?????????? ????????? ????.
?????.
?????????? ??????????? ?? ???? ??? ?????????? ???????? ???????????????? , ???? ?? ???? ?????? ??? ?????????????? ?????????.
????????? ?????????? ???????????? ????? ????????? ???????????? ????????? ? ???????????? ??????? ?????? , ?????????? ?? ??? ????????.
??????????? ?????? ???????? ?????????? ????? ??????? ?? ??? ?????:
- ?????????, ???????????? ??????????????? ???? ?????????;
-????????????, ???????? ??????? ???? ?????????;
-?????????? ??????????? ???????? , ??????? ???????????? ????????? ? ???????????? ????????? ?? ??? ??? , ???? ??? ???????? ????????? ?? ????? ???????????.
????? ?????? ?????????? ? ???????????? ???? ??????? ?? ?????? ? ?????????????? ???????? ??????. ??, ? ????? , ????????? ???????????, ???????? ??????????????? ???????????? ??? ?????? ?????? ?????????? , ???????? ????? ???????? ????????? , ?????? , ???????????? ? ????????????? ????????? ?????????.
Документ
Категория
Без категории
Просмотров
33
Размер файла
122 Кб
Теги
kursovaya_opsp
1/--страниц
Пожаловаться на содержимое документа