三傻的窝wowo吧 关注:5贴子:115
  • 3回复贴,共1
#include<iostream>
using namespace std;
int rank(int,int,int a[]);
int a[100];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
rank(1,n,a);
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}
int rank(int m,int n,int a[])
{
if(m==n)
return 0;
else
{
int t=a[m],temp,x=m,y=n;
for(int i=m;i<=n;i++)
{
if(a[i]>=t)
{
do{
temp=a[y];
a[y]=a[i];
a[i]=temp;
y--;
}
while(a[i]>=t);
}
if(a[i]<t)
{
do{
temp=a[i];
a[i]=a[x];
a[x]=temp;
x++;
i++;
}
while(a[i]<t);
}
}
a[x]=t;
rank(m,x,a);
rank(x+1,n,a);
}
}


1楼2014-10-15 14:05回复
    #include<iostream>
    using namespace std;
    int rank(int,int,int a[]);
    int a[100];
    int main()
    {
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    cin>>a[i];
    rank(1,n,a);
    for(int i=1;i<=n;i++)
    cout<<a[i]<<" ";
    return 0;
    }
    int rank(int m,int n,int a[])
    {
    if(m==n)
    return 0;
    else
    {
    int t=a[m],temp,x=m,y=n;
    for(int i=m;i<=n;i++)
    {
    if(a[i]>=t)
    {
    do{
    temp=a[y];
    a[y]=a[i];
    a[i]=temp;
    y--;
    }
    while(a[i]>=t);
    }
    if(a[i]<t)
    {
    do{
    temp=a[i];
    a[i]=a[x];
    a[x]=temp;
    x++;
    i++;
    }
    while(a[i]<t);
    }
    }
    a[x]=t;
    rank(m,x,a);
    rank(x+1,n,a);
    }
    !!!!!!!!!!!!!!!for(int i=1;i<=n;i++)
    !!!!!!!!!!!!!!!return a[i]; //第二次在这里添了一句,感觉应该要返回,但这样好像也不对,n的问题很大...
    }


    2楼2014-10-15 14:08
    回复
      至今的输出结果还是
      。。。。。。已经发给老师了。。。。。希望我的思路不是太错!


      3楼2014-10-15 14:10
      回复
        但是还有收获,1.函数中需要传送数组时。宣告函数 “int rank(int,int,int a[]);”
        要加中括号。调用函数的时候“rank(m,x,a);”不用加中括号。


        4楼2014-10-15 14:12
        回复