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();
}
我无法弄清楚插入排序和选择排序之间的区别..这个代码是按照选择算法还是插入?
答案 0 :(得分:2)
这是一种特别慢的选择排序版本。
它看起来像一个冒泡排序,但冒泡排序会比较/交换位置j-1
和j
的元素,这些元素是连续的。您比较/交换位置i
和j
的元素。
在外循环的每次迭代期间,i
在j
从i+1
前进到结束时保持不变。因此,您最终会在位置i
处拥有最小值的元素。
你可能会做出很多不必要的动作。正确的选择排序将搜索最小值而不移动任何东西。然后它会将该最小值与位置i
的值进行交换。因此,它只会在数组中每个元素执行一次交换。