pku3627 快排
来源:互联网 发布:javascript两数相加 编辑:程序博客网 时间:2024/05/14 14:33
#include<stdio.h>int partsort(int a[],int low,int high){ int key; key=a[low]; while(low<high) { while(low<high&&a[high]>=key) high--; if(low<high) a[low++]=a[high]; while(low<high&&a[low]<=key) low++; if(low<high) a[high--]=a[low]; } a[low]=key; return low;} void quicksort(int a[],int s,int t){ int loc; if(s<t) { loc=partsort(a,s,t); quicksort(a,s,loc-1); quicksort(a,loc+1,t); }}int main(){ int n,b,i,t,hight,num,a[20003]; scanf("%d%d",&n,&b); for(i=1;i<=n;i++) scanf("%d",&a[i]); t=a[(1+n)/2]; if(t>=a[1]&&t<=a[n]) //这个过程是为了使第一个元素不是最大值或最小值,用来保证快排的效率 { a[(1+n)/2]=a[1]; a[1]=t; } else if(a[n]>=a[1]&&a[n]<=t) { t=a[n]; a[n]=a[1]; a[1]=t; } quicksort(a,1,n); hight=num=0; for(i=n;i>=0;i--) if(hight>=b) break; else { hight+=a[i]; num++; } printf("%d\n",num); system("pause"); return 0;}
昨天在zoj1101用了3个小时后,pku和hdu上的排序题都基本没问题了,这道pku我用的仍然是快排,比起zoj1101,少了搜索问题,排好序后,从后开始累加,直到高度>=bookshelf输出累加次数即可。。。
- pku3627 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- 快排
- eclipse加入tomcat插件
- 1679 取石子游戏
- 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用2
- 红外协议学习笔记
- 第一次写Android程序
- pku3627 快排
- 心疼了!
- SQL Server Tips ----- TRIGGER-LESS TRACKING OF DML OPERATIONS
- GCC编译器的常识
- 通过GRUB引导安装Linux的方法
- 新浪微博开放平台开发-android客户端(1)
- 容我来补一刀
- 使用JS转换人民币大小写
- 极限测试之Matlab与Forcal的递归函数调用效率