堆排序练习 hdu 1425 sort


不只是堆排序,其他排序也能过,很水的题,拿来练习堆排序的。

代码:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 int a[1000002];
 5 
 6 void heapadjust(int *a, int k, int n)
 7 {
 8     int i, j;
 9     i=k;
10     j=2*i;
11     a[0]=a[i];
12     while(j<=n)
13     {
14     if ((j<n) && a[j]>a[j+1])
15         j++;
16     if (a[0]>a[j])
17     {
18         a[i]=a[j];
19         i=j;
20         j=2*i;
21     }
22     else
23         break;
24     }
25     a[i]=a[0];
26 }
27 
28 void heapsort(int *a, int n)
29 {
30     int j;
31     for (j=n/2; j>=1; j--)
32     heapadjust(a, j, n);
33     for (j=n; j>1; j--)
34     {
35     a[0]=a[j];
36     a[j]=a[1];
37     a[1]=a[0];
38     heapadjust(a, 1, j-1);
39     }
40 }
41 
42 int main()
43 {
44     int n, m, i;
45     while(scanf("%d%d", &n, &m)==2)
46     {
47     for (i=1; i<=n; i++)
48         scanf("%d", &a[i]);
49     heapsort(a, n);
50     if (m>n)
51         m=n;
52     for (i=1; i<=m; i++)
53     {
54         printf("%d", a[i]);
55         if (i==m)
56         printf("\n");
57         else
58         printf(" ");
59     }
60     }
61 }
优质内容筛选与推荐>>
1、Linux常用命令1-50(持续更新中)
2、《梦断代码》阅读笔记01
3、vue初学备份(动态切换class类)
4、vue笔记
5、前端页面布局中水平、垂直居中问题


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号