woneday嘿 2023-12-20 18:55 采纳率: 76.5%
浏览 3

37这个为什么会超时呢

img


问题描述:
给定N个不同的整数,要求对这N个整数按如下规则排序并输出。
规则一:所有的偶数排在奇数前面。
规则二:在规则一的前提下按照从大到小的顺序排序。

输入说明
数据由两行构成,第一行为整数n(n<=100),表示待排序整数的数量。第二行是n个整数,每个整数的取值区间都为[-32768~32767],整数之间以空格间隔。

输出说明
在一行输出排好序的整数,整数之间以空格间隔。

输入样例
5
1 2 3 4 5

输出样例
4 2 5 3 1

  • 写回答

3条回答 默认 最新

  • 柯本 2023-12-20 20:40
    关注

    你的排序循环,循环变量范围不对

    img


    当i=0时,j最大为n-1,那么a[j+1]=a[n]结果当然是不对的了
    至于超时,最大的可能是,当n=100时,你的a[n]g下标溢出,程序奔溃了
    而正确的排序循环应该为

      for( i=0; i<n-1; i++){
           for(int j=0; j<n-1-i; j++){
               if(a[j]>a[j+1]){
                   int t = a[j];
                   a[j] = a[j+1];
                   a[j+1] = t;
               }
           }
       }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月20日