【发布时间】:2013-04-02 02:51:00
【问题描述】:
void main()
{
char name[5][10],temp[10];
int i,j;
for(i=0;i<5;i++)
{
printf("\nEnter the name of student:");
scanf("%s",name[i]);
}
for(i=0;i<(5-1);i++)
{
for(j=i+1;j<5;j++)
{
if(strcmp(name[i],name[j])>0)
{
strcpy(temp,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],temp);
}
}
}
printf("\n the name of student is:");
for(i=0;i<5;i++)
{
printf("\n%s",name[i]);
}
getch();
}
我无法弄清楚插入排序和选择排序之间的区别..这段代码是遵循选择算法还是插入?
【问题讨论】:
-
请注意 - 我想交换操作由 3 个
strcpy组成(如上)会导致排序相当慢(并不是说这种排序足够快以至于它在实践中使用首先,但这是题外话)。通常的想法只是交换指针(除非您正在处理原语)。 -
@Armin:这不是冒泡排序。请注意,他比较/交换了不连续的元素。
-
@comocomocomocomo 这是一个可怕的突变。
-
@Armin “这是一个可怕的突变”。是的,但如果我们不考虑不必要的交换,它的行为类似于选择排序。此外,我见过更糟糕的事情(两个循环都遍历整个数组......)
标签: c sorting insertion-sort selection-sort