读书人

二零零九年第4题

发布时间: 2013-11-09 17:06:53 作者: rapoo

2009年第4题

题目地址:http://jobdu.sinaapp.com/problem.php?pid=1034

C语言源码:

做法一:快排

#include<stdio.h>#define maxsize 100010int a[maxsize];void adjust(int i,int n){int j,temp;j=2*i;temp=a[i];while(j<=n&&(temp<=a[j]||(j+1<=n&&temp<=a[j+1]))){if(j+1<=n&&a[j+1]>a[j])j++;a[i]=a[j];i=j;j=2*i;}a[i]=temp;}int main(){int i,n,m,temp;scanf("%d %d",&n,&m);while(n||m){if(m>n)m=n;for(i=1;i<=n;i++)scanf("%d",&a[i]);for(i=n/2;i>0;i--)adjust(i,n);for(i=1;i<=m;i++){temp=a[1];a[1]=a[n-i+1];a[n-i+1]=temp;if(n-i>1)adjust(1,n-i);}for(i=n;i>n-m+1;i--)printf("%d ",a[i]);printf("%d\n",a[i]);scanf("%d %d",&n,&m);}}


读书人网 >编程

热点推荐