Qiankunyyds 2023-03-12 16:24 采纳率: 100%
浏览 42
已结题

下面这个程序为什么会运行超时啊

下面这个程序为什么会运行超时啊?真的很绝望。
本题要求编写程序,输入若干英文单词,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。

输入格式:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
 char color[20][11];
 int index=0;
 char *tmp;
 scanf("%s",color[index]);
 index++;
 while(color[index]!="#")
 {
     scanf("%s",color[index]);
     index++;
 }
   index--;
  for(int j=0;j<index-1;j++)
  {
      for(int k=j+1;k<index-1;k++)
      {
          if(strcmp(color[j],color[k])>0)
          {
              strcpy(tmp,color[j]);
              strcpy(color[j],color[k]);
              strcpy(color[k],tmp);
           }
          }
      printf("%s ",color[j]);
  }
  return 0;
}

输入为若干英文单词,每行一个,以#作为输入结束标志。其中英文单词总数不超过20个,英文单词为长度小于10的仅由小写英文字母组成的字符串。

输出格式:
输出为排序后的结果,每个单词后面都额外输出一个空格。

  • 写回答

4条回答 默认 最新

  • QWQ.qwq 2023-03-12 16:33
    关注

    如果你是超时的话那么说明此题时间复杂度为O(n),所以你可以想办法把双循环改成单循环

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 已采纳回答 3月23日
  • 专家修改了标签 3月12日
  • 创建了问题 3月12日