码迷,mamicode.com
首页 > 编程语言 > 详细

堆排序

时间:2018-03-01 00:50:37      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:str   问题   use   pac   数组   void   pad   下标   交换   

 

 

 1 #include <iostream>
 2 using namespace std;
 3 
 4 void HeapAdjust(int Array[],int s ,int m);
 5 void HeapSort(int Array[],int Length)
 6 {
 7     for(int i = Length/2 ;i>0;i--)
 8     {
 9         HeapAdjust(Array,i,Length);
10     }
11 
12     for(int j =Length ;j>1 ;j-- )
13     {
14         int temp;
15         temp = Array[j];
16         Array[j] = Array[1];
17         Array[1] = temp;
18         HeapAdjust(Array,1,j-1);
19     }
20 }
21 void HeapAdjust(int Array[],int s ,int m)
22 {
23     int temp = Array[s];
24     for(int i = 2*s  ; i <= m ; i = i*2)
25     {
26         if(Array[i]<Array[i+1] && i<m) //这里面的i<m 保证了i+1不越界
27         {
28             ++i;
29         }
30         if(temp >= Array[i])
31             break;
32         Array[s] = Array[i];
33         s = i;
34     }
35     Array[s] = temp;//简便在这次交换
36 }
37 
38 int main()
39 {
40 
41     int a[6] = {0,4,3,6,2,1};
42     for(int i =0 ;i<5; i++)
43     {
44         printf("%d ",a[i]);
45     }
46     printf("/n ");
47     HeapSort(a,5);
48     for(int i =0 ;i<5; i++)
49     {
50         printf("%d ",a[i]);
51     }
52     system("pause");
53 }

方法是没问题,但是上面的主函数写错了,因为上面写的是从下标为1开始的,数组的时候,要小心是不是有零

堆排序

标签:str   问题   use   pac   数组   void   pad   下标   交换   

原文地址:https://www.cnblogs.com/xiaochige/p/8486227.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!