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

    堆排序:

    利用这种数据结构而设计的一种排序算法,堆排序是一种选择排序它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。

    (不知道堆的,自行百度)

    堆排序的基本思路:

      a.将无需序列构建成一个堆,根据升序降序需求选择大顶堆或小顶堆;

      b.将堆顶元素与末尾元素交换,将最大元素"沉"到数组末端;

      c.重新调整结构,使其满足堆定义,然后继续交换堆顶元素与当前末尾元素,反复执行调整+交换步骤,直到整个序列有序。

    至于实现的话,C++有stl(优先队列啊),干嘛非得手写堆。

     

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstdio>
     4 #include<cstring>
     5 #include<string>
     6 #include<queue>
     7 #include<cmath>
     8 #define ll long long
     9 #define DB double
    10 #define inf 214748360000
    11 #define mod 1000000007
    12 using namespace std;
    13 int n;
    14 struct node{
    15     int x;
    16     friend bool operator <(node a,node b)
    17     {
    18         return a.x>b.x;
    19     }
    20 };
    21 priority_queue<node>q;
    22 int main()
    23 {
    24     scanf("%d",&n);
    25     for(int i=1;i<=n;++i)
    26     {
    27         int x;scanf("%d",&x);
    28         q.push((node){x});
    29     }
    30     while(!q.empty())
    31     {
    32        cout<<q.top().x<<" ";
    33        q.pop();    
    34     }
    35     return 0;
    36 }
    View Code

    放得功名富贵之心下,便可脱凡;放的仁义道德之心下,才可入圣。

  • 相关阅读:
    javaWeb快速入门+——初体验-HelloWorld
    简单理解Linux系统的挂载是什么鬼
    STM32MP157 Cortex®-M4高性能系列MCU
    常见六种锂电池特性及参数对比
    IIC通信详解
    stm32微秒延时问题
    STM32 HAL库实现微秒级别延时
    开关电源波纹的产生、测量及抑制
    图解DIY 1pA超微电流测试器
    stm32
  • 原文地址:https://www.cnblogs.com/adelalove/p/8484524.html
Copyright © 2011-2022 走看看