hdu As Easy As A+B
2012-09-01 10:48
190 查看
正如题目所说,这是一道像A+B一样简单的一道题,
code:
code:
//从今天开始不再用宏定义 //采用松散的代码写法~~ #include <iostream> #include <algorithm> #include <cstdio> #include <vector> #include <cstring> using namespace std; void swap(int &a1,int &a2) { int tmp=a2; a2=a1; a1=tmp; } void max_heapfy(int A[],int i,int heap_size) { int l=i<<1; int r=i<<1|1; int largest; if(l<=heap_size && A[l]>A[i]) { largest=l; }else{ largest=i; } if(r<=heap_size && A[r]>A[largest]) { largest=r; } if(largest!=i) { swap(A[i],A[largest]); max_heapfy(A,largest,heap_size); } } void build_max_heap(int A[],int heap_size) { int i; for(i=heap_size/2;i>=1;i--) { max_heapfy(A,i,heap_size); } } void heap_sort(int A[],int len) { int i; build_max_heap(A,len); for(i=len;i>=2;i--) { swap(A[1],A[len]); len--; max_heapfy(A,1,len); } } int dat[1001],n; int main() { int cas,i; scanf("%d",&cas); while(cas--){ scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&dat[i]); } heap_sort(dat,n); for(i=1;i<n;i++) { printf("%d ",dat[i]); } printf("%d\n",dat ); } return 0; }
相关文章推荐
- HDU 1040 As Easy As A+B
- hdu 1040 As Easy As A+B
- HDU 1040 As Easy As A+B (排序。。。水题)
- 【HDU】1040 As Easy As A+B
- hdu 1040 As easy ay A+B 20140805.cpp
- 杭电 HDU 1040 As Easy As A+B
- HDU's ACM 1040 As Easy As A+B
- hdu 1040 As Easy As A+B(快排练习水题~)
- hdu_1040_As Easy As A+B_201308191751
- HDU1040_As Easy As A+B
- HDU 1040 As Easy As A+B
- hdu 1040 As Easy As A+B
- HDU 1040 As Easy As A+B 水题
- HDU 1040 As Easy As A+B
- hdu1040 As Easy As A+B (排序)
- HDU 1.3.8 As Easy As A+B
- HDU 1040 As Easy As A+B(排序)
- hdu-1040-As Easy As A+B(冒泡排序)
- HDU-1040-As Easy As A+B(诚如题目所说和A+B一样简单-插入排序水过)
- ACM-简单题之As Easy As A+B——hdu1040