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);}}