HDU 1040 As Easy As A+B(堆排序)
是升序
所以先建大堆
可以向下調整
然後再進行逐個換位排序
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<vector>
using namespace std;
#define maxn 10010
int heap[maxn],n;
void downAdjust(int low,int high)
{
int i=low;
int j=i*2;
while (j<=high)
{
if(j+1<=high&&heap[j+1]>heap[j])
{
j=j+1;
}
if(heap[j]>heap[i])
{
swap(heap[j], heap[i]);
i=j;
j=i*2;
}
else
{
break;
}
}
}
void createHeap()
{
for(int i=n/2;i>=1;i--)
{
downAdjust(i, n);
}
}
void heapSort()
{
createHeap();
for(int i=n;i>1;i--)
{
swap(heap[i], heap[1]);
downAdjust(1, i-1);
}
for(int i=1;i<=n-1;i++)
{
printf("%d ",heap[i]);
}
printf("%d\n",heap[n]);
}
int main()
{
int t;
scanf("%d",&t);
while (t--)
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&heap[i]);
}
heapSort();
}
return 0;
}
相關文章
- As Easy As A+B
- hdu 1720 A+B Coming
- HDU 2033 : 人見人愛A+B (C語言)C語言
- A+B
- MURF1040CT-ASEMI無人機專用MURF1040CT無人機
- MURF1040CT-ASEMI快恢復二極體MURF1040CT
- MySQL ERROR 1040: Too many connectionsMySqlError
- 看懂堆排序——堆與堆排序(三)排序
- 堆排序排序
- A+B問題
- python 堆排序Python排序
- js堆排序JS排序
- hdu 2111 Saving HDU (DP)
- [#181024][PAT Practice] A+B FormatORM
- [Algorithm] 1. A+B ProblemGo
- 1016. 部分A+B (15)
- 堆排序 Heap Sort排序
- 堆排序詳解排序
- 堆排序(C++)排序C++
- 杭電OJ1040解題報告
- ●Joyoi Easy
- 1016 部分A+B (15 分)JavaJava
- [PAT B] 1011 A+B 和 C
- PAT:1001 A+B Format (20分)ORM
- A+B 演算法問題演算法
- PAT-B 1016 部分A+B
- Python入門:A+B問題Python
- 2020/12/27 G小明A+B
- js 實現堆排序JS排序
- 堆與堆排序(一)排序
- Shape of HDU
- HDU 3349
- Leetcode(easy heap)LeetCode
- Easy-Admin
- LeetCode-EasyLeetCode
- 【BUUCTF】Easy JavaJava
- 【BUUCTF】easy calc
- 字串魔法(easy)字串