问一个有关排序的问题!!!

Awang_126 2004-03-13 12:01:35
1。要求看程序填空:
题目:
输入若干个国家名称,请按字典顺序将这些国家进行排序并输出(设所有的名称均用大写或小写表示)
main()
{string R[N];//设N为一个已知的常数,必须保证n<=N
string temp;
int I,h,n,chang;
scanf(“%d”,&n);
printf(“input country name\n”);
for (I=0;I<n,I++)scanf(“%s”,R[i]);
h=n;
while (h>0)
{h=h/2;

do
{change=false;
for (I=0_____________________________)
if (R[I]>R[I +h]
{temp=R[I];
R[I]=R[I +h]
_____________________________;
}
}while (!change);
}
printf(“output country name/n”);
for (I=0;I<n;I++)
printf(R[i]);
}

...全文
49 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <string>
using namespace std;
#define N 50
main()
{
string R[N];//设N为一个已知的常数,必须保证n<=N
string temp;
char m[200]; // 临时用于scanf

int I,h,n,change;
scanf("%d",&n);
printf("input country name\n");
for (I=0;I<n;I++)
{
scanf("\n%s",m);
R[I]=m;
}
printf("input country name\n"); //debug 用
for (I=0;I<n;I++) //
printf("%s\n",R[I].c_str()); //

h=n;

while (h>0)
{
h=h/2;

do
{
change=false;
for (I=0;I<n-h; I++ )
if (R[I]>R[I +h])
{
temp=R[I];
R[I]=R[I +h];
R[I+h] = temp;
change=true;
}
}while (change);
}
printf("output country name\n");
for (I=0;I<n;I++)
printf("%s\n",R[I].c_str());
}
cnxiaohai 2004-03-15
  • 打赏
  • 举报
回复
明显的SEHLL算法~~~~~~~~~~~~~~~~~~~
  • 打赏
  • 举报
回复
1.I<n-h; I++
2. R[I+h] = temp; change=true;
(while处应是while(change))
------------------------------------------------
我用dev-cpp写了一段完整的程序,供参考
#include <stdio.h>
#include <string>
using namespace std;
#define N 50
main()
{
string R[N];//设N为一个已知的常数,必须保证n<=N
string temp;
char m[200]; // 临时用于scanf

int I,h,n,change;
scanf("%d",&n);
printf("input country name\n");
for (I=0;I<n;I++)
{
scanf("\n%s",m);
R[I]=m;
}
printf("input country name\n"); //debug 用
for (I=0;I<n;I++) //
printf("%s\n",R[I].c_str()); //

h=n;

while (h>0)
{
h=h/2;

do
{
change=false;
for (I=0;I<n-h; I++ )
if (R[I]>R[I +h])
{
temp=R[I];
R[I]=R[I +h];
R[I+h] = temp;
change=true;
}
}while (change);
}
printf("output country name\n");
for (I=0;I<n;I++)
printf("%s\n",R[I].c_str());
}




hangdian 2004-03-13
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<string.h>
#define N 5

void main()
{

string R[N];//设N为一个已知的常数,必须保证n<=N
string temp;
int I,h,n,chang;
scanf("%d",&n);
printf("input country name\n");
for (I=0;I<n,I++)scanf("%s",R[i]);
h=n;
while (h>0)
{h=h/2;

do
{change=false;
for (I=0;I<n-h;I++)
if (R[I]>R[I +h]
{temp=R[I];
R[I]=R[I +h]
R[I+h]=temp;
}
change=true;
}while (!change);
}
printf("output country name/n");
for (I=0;I<n;I++)
printf(R[i]);
}

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧