6479: 快排的次数

内存限制:256 MB 时间限制:2 S
题面:传统 评测方式:文本比较 上传者:
提交:3 通过:1

题目描述

 #include <bits/stdc++.h>
 using namespace std;
 int sum;
 int a[2001];
 int select(int l, int r, int k){
sum++;
int m=a[(l+r)/2],t;
int i=l,j=r;
while(i<=j){
while (a[i]>m)i++;
while (a[j]<m)j--;
if(i<=j){
t=a[i]; a[i]=a[j];a[j]=t;
i++; j--;
}
   }
if(k<=j) return select(l,j,k);
     if(k>=i) return select(i,r,k);
return a[k];
  }
  int main()
  {
int n,k;
cin>>n>>k;
   sum=0;
for(int i=1;i<=n;i++)cin>>a[i];
cout<<select(1,n,k)<<"\n";
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<"\n";
cout<<sum<<endl;
return 0;
  }

输入样例 复制


输出样例 复制


分类标签