1 #include <stdio.h>
2 #include <stdlib.h>
3 #define MAXLEN 10
4 #define K 3
5
6
7 void HeapAdjust(int array[], int i, int len)
8 {
9 int temp=array[i];
10 int j;
11 for (j=2*i; j<len; j*=2)
12 {
13 if (j<len && array[j] < array[j+1])
14 {
15 ++j;
16 }
17 if (temp < array[j])
18 {
19 array[i]=array[j];
20 i=j;
21 }
22 else
23 break;
24 }
25 array[i]=temp;
26
27 }
28
29 void Swap(int& a,int& b)
30 {
31 int temp;
32 temp=a;
33 a=b;
34 b=temp;
35 }
36
37
38 void HeapSort(int array[], int len)
39 {
40 int i;
41 for (i=len/2-1; i>=0; --i)
42 {
43 HeapAdjust(array, i, len);
44 }
45 for (i=len-1; i>=1; --i)
46 {
47 Swap(array[0], array[i]);
48 HeapAdjust(array,0,i-1);
49 }
50 }
51
52 int main()
53 {
54 int array[MAXLEN];
55 int i;
56 for(i=0;i<MAXLEN;++i)
57 array[i] =MAXLEN-i;
58 HeapSort(array,MAXLEN);
59 for (i=0; i<MAXLEN; i++)
60 {
61 printf("%d ", array[i]);
62 }
63 return 0;
64 }