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

挿入ソートと選択ソートの違いを理解できませんでした..このコードは選択アルゴリズムまたは挿入に従っていますか?

4

1 に答える 1

2

これは、選択ソートの特に遅いバージョンです。

バブル ソートのように見えますが、バブル ソートは隣接するj-1との位置の要素を比較/交換します。と の位置でj要素を比較/交換します。ij

外側のループの反復ごとに、最後まで進むi間、一定のままです。したがって、 position で最小値を持つ要素を持つことになります。ji+1i

あなたはおそらく多くの不必要な動きをします。適切な選択ソートでは、何も移動せずに最小値を検索します。次に、その最小値を position の値と交換しますi。したがって、配列内の要素ごとに 1 つのスワップのみが実行されます。

于 2013-04-10T10:49:27.393 に答える