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();
}
我无法弄清楚插入排序和选择排序之间的区别。这段代码遵循选择算法还是插入?
最佳答案
这是选择排序的一个特别慢的版本。
它看起来像冒泡排序,但冒泡排序会比较/交换位置 j-1
和 j
处的元素,这两个位置是连续的。您比较/交换位置 i
和 j
处的元素。
在外循环的每次迭代期间,i
保持不变,而 j
从 i+1
前进到末尾。因此,您最终会在位置 i
处得到具有最小值的元素。
你可能做了很多不必要的 Action 。正确的选择排序将搜索最小值而不移动任何内容。然后它将将该最小值与位置 i 处的值交换。因此,它只会对数组中的每个元素执行一次交换。
关于c - 这是选择排序还是插入排序?请给我正确的方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15922873/