堆排序

成绩 10 开启时间 2015年12月8日 星期二 10:00
折扣 0.8 折扣时间 2015年12月24日 星期四 23:55
允许迟交 关闭时间 2015年12月31日 星期四 23:55

实验要求:用堆排序算法按关键字递减的顺序排序

 

程序输入:待排序记录数(整数)和待排序记录(整数序列);

 

程序输出:建堆结果和建堆后第一、第二次筛选结果。(注:待排序记录数大于等于3

 

 

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 
 4 #define xunhuan Heapsort();\
 5          for(i=1;i<=number;i++) \
 6             printf("%d ",a[i]); \
 7        printf("\n"); \
 8        a[1]=a[number]; \
 9        number--;
10 
11 int a[100];
12 int number;
13 
14 
15 
16 
17 void adjust(int length, int t)
18 {
19     int i, j, up;
20     i = length;
21     j = 2 * i;
22     up = a[i];
23     while (j <= t)
24     {
25         if (j<t&&a[j]<a[j + 1])
26             j++;
27         if (up<a[j])
28         {
29             a[i] = a[j];
30             i = j;
31             j = 2 * i;
32         }
33         else
34         {
35             j = t + 1;
36         }
37     }
38     a[i] = up;
39 }
40 void Heapsort()
41 {
42     int length;
43     for (length = number / 2; length >= 1; length--)
44         adjust(length, number);
45 
46 }
47 int main()
48 {
49     int i, j, k, t;
50     for (i = 0; i<100; i++)
51         a[i] = 0;
52     scanf("%d", &number);
53     for (i = 1; i <= number; i++)
54     {
55         scanf("%d", &a[i]);
56     }
57     xunhuan;
58     xunhuan;
59     xunhuan;
60     
61 }

 

 

 

posted @ 2015-12-31 15:11  Daniel_Yi  阅读(601)  评论(0编辑  收藏  举报