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

堆排序

时间:2019-04-08 21:20:54      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:col   排序   筛选   代码   cout   out   namespace   cst   堆排   

堆排序的关键就是筛选,代码如下:

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<string>
 5 #include<cstdio>
 6 using namespace std;
 7 
 8 void sift(int arr[],int low,int high)
 9 {
10     int i=low,j=2*i;
11     int tmp=arr[i];
12     while(j<=high)
13     {
14         if(j<high&&arr[j]<arr[j+1])
15             j++;
16         if(tmp<arr[j])
17         {
18             arr[i]=arr[j];
19             i=j;
20             j=2*i;
21         }
22         else
23             break;
24     }
25     arr[i]=tmp;
26 }
27 
28 void Heapsort(int arr[],int n)
29 {
30     for(int i=n/2;i>=1;i--)  //建立初始堆
31         sift(arr,i,n);
32     for(int i=n;i>=2;i--)    //进行n-1趟完成堆排序,每一趟堆中元素个数减一
33     {
34         swap(arr[1],arr[i]);
35         sift(arr,1,i-1);
36     }
37 }
38 
39 int main()
40 {
41     int n;
42     int arr[1000];
43     cin>>n;
44     for(int i=1;i<=n;i++)
45         cin>>arr[i];
46     Heapsort(arr,n);
47     for(int i=1;i<=n;i++)
48         cout<<arr[i]<<" ";
49     return 0;
50 }

 

堆排序

标签:col   排序   筛选   代码   cout   out   namespace   cst   堆排   

原文地址:https://www.cnblogs.com/Iwpml-595/p/10673217.html

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