这是选择排序还是插入排序?请给我正确的方向

时间:2013-04-10 10:07:46

标签: c sorting insertion-sort selection-sort

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();
}

我无法弄清楚插入排序和选择排序之间的区别..这个代码是按照选择算法还是插入?

1 个答案:

答案 0 :(得分:2)

这是一种特别慢的选择排序版本。

它看起来像一个冒泡排序,但冒泡排序会比较/交换位置j-1j的元素,这些元素是连续的。您比较/交换位置ij的元素。

在外循环的每次迭代期间,iji+1前进到结束时保持不变。因此,您最终会在位置i处拥有最小值的元素。

你可能会做出很多不必要的动作。正确的选择排序将搜索最小值而不移动任何东西。然后它会将该最小值与位置​​i的值进行交换。因此,它只会在数组中每个元素执行一次交换。