Professional Documents
Culture Documents
.1
.
20
20
40
30
40
40
62
62
120
120
130
40
62
30
120
130
62
30
120
130
20
62
120
130
30
20
120
130
40
30
20
130
62
40
30
20
120
62
40
30
20
Data
Selection
Data
Selection
Data
Selection
Data
Selection
Data
Selection
Data
.
:
{ )public static void Select_Sort(int[] t, int i
;int j, k, w
;int n = t.length
{
{ )if (i < n
;j = i
)for (k = i + 1; k < n; k++
)]if (t[k] < t[j
;j = k
;]w = t[j
;]t[j] = t[i
;t[i] = w
;)Select_Sort(t, i + 1
}
}
;return
}
:
)public static void Itr_Select_Sort(int[] t
{
;int j, k, w,i
;int n = t.length
{
;i = 0
{ )while (i < n
;j = i
)for (k = i + 1; k < n; k++
)]if (t[k] < t[j
;j = k
;]w = t[j
;]t[j] = t[i
;t[i] = w
;i = i + 1
}
;return
}
}
1 .1
.
.
:
n n-1
n-1 . :
Maxc(n) = n-1 + Maxc(n-1) ; n >1
Maxc(1) = 0
:
)Avc(n) = Maxc(n
:
2
)n(n 1
) = O (n 2
2
n 1
Maxc(n) = Maxc(1) +
i =1
:
)n(n 1
) = O (n 2
2
n 1
= Avc(n) = Maxc(n) = i
i =1
:
. :
)Av E(n) = Max E(n
Max E(n) = 1 + Max E(n-1) for i >1
Max E(1) =0
) Av E(n) = Max E(n) = n-1 = O (n
. 2 ) (Bubble Sort
.
)(
.
.
20
40
40
62
40
20
62
62
40
62
20
30
30
30
120
120
20
120
120
20
130
130
30
130
30
130
Data
Exchanges
20
20
Data
Exchanges
62
62
120
120
130
130
20
Data
Exchanges
40
120
120
62
130
120
40
130
20
Data
Exchanges
130
120
62
40
30
20
Data
Exchanges
120
62
40
30
20
Data
130
130
30
40
30
40
62
:
)public static void Buble_Sort (int[] t
{
;int i, j, w
;int n = t.length
;i = 0
)while (i < n
{
)for (j = n-1; j > i ; j--
)]if (t[j] < t[j - 1
{
;]w = t[j - 1
;]t[j - 1] = t[j
;t[j] = w
}
;i = i + 1
}
;return
}
1 .2
:
. :
)n(n 1
) = O (n 2
2
n 1
= Avc(n) = Maxc(n) = i
i =1
:
...
n-2
- n-1
.:
)n(n 1
) = O (n 2
2
n 1
) (n i
i =1
= )MaxE(n
- :
MinE(n) = 0
- :
t n t ' t :
]t'[1] = t[n], t'[2] = t[n-1], .... , t'[n] = t[1
t t t
' . t
)n(n 1
2
t'. t
T n T
. ) C(t t
) p(t t:
) AVE(n) = p (t ).C (t
i T
T :
: Tc n ]t[1]<t[n
: Td n ]t[1]>t[n
t Tc t'Td . :
) p (t ).C (t ) + p (t ).C (t
t Td
= )AVE(n
t Tc
p(t) =
) AVE(n) = C (t ) + C (t
t Td
t Tc
) )AVE(n) = (C (t ) + C (t
t Tc
)n (n 1
AVE(n) =
2
t Tc
) n (n 1
AVE(n) = Tc
2
5
1
Tc Td
2
= Tc
)n (n 1
) = O (n 2
4
= )AVE(n
.3
i i 1 i
.
20
40
62
30
120
130
20
40
62
30
130
120
20
40
62
130
120
30
20
40
130
120
62
30
20
130
120
62
40
30
130
120
62
40
30
20
: .
1 .3
. t
i ] t[i
] t[0, , i-1 .
.
]T[i
:
)public static int range (int[] t,int p,int q,int x
{
;int m,r
)if (p == q
;r = p
else
{
;m = (p + q)/2
) ]if ( x < t[m
;)r = range(t, p, m, x
else
;)r = range(t, m, q, x
}
;return r
}
)if (i >=1
{
;)bin_insert_sort(t, i - 1
)]if (t[i - 1] > t[i
{
}
}
;return t
}
:
i )) Insert_sort (t, i-1 ] t[0 ]t[k
)n(n + 1
1
2
=
) = O (n 2
Maxc(n) = i = 2
.
Minc(n) = n-1
)n(n 1
) = O( n 2
4
)Avc(n
:
= 1 +
:
)n(n + 1
) = O (n 2
2
= )MaxT(1
MinT(n) = n
)n(n 1
) + 1 = O(n 2
4
= )AvT(n
2 .3
)if (i >=1
{
;)bin_insert_sort(t, i - 1
)]if (t[i - 1] > t[i
{
;)]k = range(t, 0, i - 1, t[i
;]x = t[i
)for (j = i - 1; j < k; j--
;]t[j + 1] = t[j
;t[k] = x
}
}
;return t
}
)public static int place (int[] t, int i, int j,int k
{
;int p, l, w
;l = i+1
;k = j
{ )while (l <= k
)]while (t[k] > t[i
;k = k - 1
)]while (t[l] <= t[i
;l = l + 1
)if (l < k
{
;]w = t[l
;]t[l] = t[k
;t[k] = w
;k = k - 1
;l = l + 1
}
}
;]w = t[i
;]t[i] = t[k
;t[k] = w
;return k
. k :
Maxrange(k) = log k
2
:
for n >1
:
)Maxc(n) = 1 + Maxc(n-1) + log2(n-1
Maxc(1) =0
for n >1
:
)
n 1
log k = O (n
2
Maxc(n) = (n-1) +
k =1
.4 ) (
) (Quicksort :
.
) (Pivot
.
) (
.
)place(t, i, j, k
10
]t[i], . , t[j
] t[i k .
1 .4
K L :
: L .
: K .
] a[L ] a[K L . K
20
40
62
130
120
110
120
40
62
130
20
110
120
130
62
lk
40
20
110
120
130
62
40
20
110
120
130
110
40
20
62
:
)public static int place (int[] t, int i, int j,int k
{
;int p, l, w
;l = i+1
;k = j
{ )while (l <= k
)]while (t[k] > t[i
;k = k - 1
)]while (t[l] <= t[i
11
;l = l + 1
)if (l < k
{
;]w = t[l
;]t[l] = t[k
;t[k] = w
;k = k - 1
;l = l + 1
}
}
;]w = t[i
;]t[i] = t[k
;t[k] = w
;return k
}
:
)Quick_Sort (int[] t, int i, int j
;)j,k
;)i, k - 1
;)k + 1, j
}
; return
}
:
n n+1 n-1 ) l,
(k n/2 . .
12
Quick_Sort(t,1,n)
Quick_Sort(t,1,0)
Quick_Sort(t,2,n)
Quick_Sort(t,3,n)
. . . . . . . . .
Quick_Sort(t,n-1,n-2)
Quick_Sort(t,n,n)
:
Maxc (n) = (n + 1) + (n) + ... + 3 =
(n + 2).(n + 1)
3 = O(n 2 )
2
:
. p
1 n
n 1 + . ( Avc ( p 1) + Avc (n p ) ) Avc (n)
n p =1
1 n
Avc (n) n + 1 + . ( Avc ( p 1) + Avc (n p ) )
n p =1
Avc (0) = Avc (1) = 0
1
1
A(n) = n 1 + . ( A( p 1) + A(n p ) ) B (n) = n + 1 + . (B ( p 1) + B(n p ) )
n p =1
n p =1
n
13
A(0) = B(0) = 0
2 n 1
) ) A(n) = n 1 + . ( A( p
n p =1
1 n 1
) ) B (n) = n + 1 + . (B ( p
n p =1
:
A(n) = 2(n + 1) H n 4n
4
8
8
1
H n = Logn
i =1 i
n
:
Avc (n) 2n.Logn 1,38n. log 2 n
.5
o f1, f2, , fn o o fi i = 1, 2, , n
.
10
11
14
14
18
12
t:
] t[1
] t[i div 2 i i > 1
p .
] t[1], t[2], ..., t[p :
i p div 2
]t[i] t[2*i
] t[i] t[2*i +1
1 .5
. :
] t[p ]t[1
1
:
.
:
)r
15
;t[j] = x
;i = j
}
}
;return
}
2 .5
n
:
;int l = (n / 2) + 1
;int r = n
{ )while (l > 1
;l = l - 1
;)sift(l, n
}
:
)public static void Heap_sort (int[] t
{
;int n = t.length
;int l = (n / 2) + 1
;int r = n
{ )while (l > 1
;l = l - 1
;)sift(l, n
}
)while (r > 1
{
int
;]x = t[1
;]t[1] = t[r
;t[r] = x
;r = r - 1
;)sift(1, r
}
;return
}
.
n
) log(n .
16
.6
-1
T
T[i].age = t[j].age i<j i j k l
.k < l
-
.
-
-2 .
- n
)(R
) (B ) (W
. .
- 3
-
) ( ) ( :
A > K > Q > J > 10 > 9 > 8 > 7 > 6 > 5 > 4 > 3 > 2
-3 :
- .
-
(.
17
-
:
2, 3, 4, 5, 6, 7, 8, 1
8, 1, 2, 3, 4, 5, 6, 7
.
-4
.
18