快速排序:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using namespace std;
int n[5] = {4,3,1,5,2};
void quickSort(int s, int t);
int sort(int s, int t);
int main()
{
quickSort(0,4);
for (int i=0;i<5;i++) cout<<n[i];
return 0;
}
void quickSort(int s, int t)
{
if(s>=t) return;
int k = sort(s, t);
quickSort(s,k-1);
quickSort(k+1,t);
return;
}
int sort(int s, int t)
{
int key = n[s];
while(s<t)
{
while(n[t]>=key&&t>s) t--;
n[s] = n[t];
s++;
while(n[s]<=key&&t>s) s++;
n[t] = n[s];
t--;
}
n[s] = key;
return s;
}
堆排序:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using namespace std;
int n[10] = {5,1,4,9,8,7,6,2,10,3};
int l = 10;
void creatHeap();
void backHeap(int t);
int main()
{
creatHeap();
int i;
for (i=1;i<=l;i++)
{
cout<<n[0];
n[0] = n[l-i];
backHeap(l-i);
}
return 0;
}
void creatHeap()
{
int i;
for (i=l/2;i>=1;i--)
{
if (2*i==l||n[2*i-1]>n[2*i])
{
if (n[i-1]<n[2*i-1])
{
int temp = n[2*i-1];
n[2*i-1] = n[i-1];
n[i-1] = temp;
}
}
else if (n[2*i-1]<=n[2*i])
{
if (n[i-1]<n[2*i])
{
int temp = n[2*i];
n[2*i] = n[i-1];
n[i-1] = temp;
}
}
}
}
void backHeap(int t)
{
int i;
for (i=1;i<=t/2;i++)
{
if (2*i==t||n[2*i-1]>n[2*i])
{
if (n[i-1]<n[2*i-1])
{
int temp = n[2*i-1];
n[2*i-1] = n[i-1];
n[i-1] = temp;
}
}
else if (n[2*i-1]<=n[2*i])
{
if (n[i-1]<n[2*i])
{
int temp = n[2*i];
n[2*i] = n[i-1];
n[i-1] = temp;
}
}
}
}