zoukankan      html  css  js  c++  java
  • 堆排序

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

     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 }
    
    
  • 相关阅读:
    php stdClass转数组
    PHP 获取1970年前的时间戳,且为负
    springboot响应格式Resullt封装
    php使用elasticsearch
    day0620211207
    day0820211209
    day022021121
    day0520211206
    day0720211208
    day0320211202
  • 原文地址:https://www.cnblogs.com/Iwpml-595/p/10673217.html
Copyright © 2011-2022 走看看