m0_62172160 2021-12-20 21:00 采纳率: 81.8%
浏览 36

简单的排序问题,谁能帮我看看错哪了

输入一行数据,n个数据(偶数个),以中间为界限,前n/2个数按升序输出,后n/2个数按照降序输出
输入
输入数据有多组,每组的第一行输入一个偶数(n)表示共有几个数,第二行输入n个整数并用空格隔开。
输出
输出只有一行,前n/2个数按升序输出,后n/2个数按照降序输出(注意输出最后一个数时,后面没有空格)
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main()
{
int n,a[100000],i,j,t;
while(scanf("%d",&n)!=EOF)
{
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
for(j=0; j<n/2; j++)
{
for(i=0; i<n/2-1; i++)
{
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
for(i=n/2; i<n-1; i++)
{
if(a[i]<a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
for(i=0; i<n; i++)
{
if(i==n-1)
printf("%d\n",a[n-1]);
else
printf("%d ",a[i]);
}
}
return 0;
}
一直 WA

  • 写回答

3条回答 默认 最新

  • fuill 2021-12-20 21:43
    关注

    img

    
    void sort(int t[],int b,int n)//下标b到n排序 
    {
        int j=b;
        int k;
        int flg=0;
        int tem;
        int j2=n;
        while(j<n-1)
        {
            k=b;
            flg=0;
            while(k<n-1)
            {
                if(t[k]>t[k+1])
                {
                    tem=t[k];
                    t[k]=t[k+1];
                    t[k+1]=tem;
                    flg=1;
                }
                k++;
            }
            if(flg==0)
            {
                break;
            } 
            n--;
        }
    }
    void sort2(int t[],int b,int n)//下标b到n排序 
    {
        int j=b;
        int k;
        int flg=0;
        int tem;
        int j2=n;
        while(j<n-1)
        {
            k=b;
            flg=0;
            while(k<n-1)
            {
                if(t[k]>t[k+1])
                {
                    tem=t[k];
                    t[k]=t[k+1];
                    t[k+1]=tem;
                    flg=1;
                }
                k++;
            }
            if(flg==0)
            {
                break;
            } 
            n--;
        }
        
        for(k=b;k<j2;j2--,k++)
        {
            if(j2>(n*3)/4) 
            {
            int tem2=t[k];
            t[k]=t[j2-1];
            t[j2-1]=tem2;
            }
            
        }
    }
    void Printarr(int t[],int n)
    {
        int j=0;
        while(j<n)
        {
            printf(" %d",t[j]);
            j++;
        }
        //printf("\n");
    }
    int main()
    {
            int j=0;
            int n,n2;
            //printf("请输入数组p1[]大小:");
            scanf("%d",&n);
            int p1[n];
            while(j<n)
            {
                scanf("%d",&p1[j]);
                j++;
            }
            sort(p1,0,n/2);
            sort2(p1,n/2,n);
            Printarr(p1,n);
            return 0;
            
            
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月20日

悬赏问题

  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求
  • ¥20 antv g6 折线边如何变为钝角
  • ¥30 如何在Matlab或Python中 设置饼图的高度
  • ¥15 nginx中的CORS策略应该如何配置
  • ¥30 信号与系统实验:采样定理分析
  • ¥100 我想找人帮我写Python 的股票分析代码,有意请加mathtao