如何在 C 语言的选择排序中打印每次迭代?
How do I print each iteration in Selection sort in C?
我是一个想学习 C 的新手,我需要使用选择排序对数组进行排序。随着算法的进展,我还需要显示每次迭代。但我似乎无法使以下代码工作。它在执行排序迭代部分的显示时抛出随机垃圾数字(请参见图片)。我已经搜索了很多,但似乎仍然无法确定此错误的原因。请帮忙。 Program execution
#include<stdio.h>
int main()
{
int s,i,j,t,temp,a[20];
printf("Enter the number of elements in the array\n");
scanf("%d",&s);
for(i=0;i<s;i++)
{
printf("Enter element %d\n",i+1);
scanf("%d",&a[i]);
}
printf ("Selection sort.\narray before sorting:\n");
for (i=0;i<s;i++)
printf ("%d ",a[i]);
printf ("\n");
for(i=0;i<s;i++)
{
printf ("After iteration %d\n", i+1);
for(j=i+1;j<s;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
for (t=0;t<s;t++);
printf ("%d ",a[t]);
printf ("\n");
}
printf("Array after sorting:\n");
for(i=0;i<s;i++)
printf ("%d ",a[i]);
return 0;
}
你的问题是这一行:
for (t=0;t<s;t++);
该行以 ;
结尾意味着 t 将计数到 s 而无需完成任何工作,并且在该循环之后将打印一行未初始化的值 a[s]
.
我是一个想学习 C 的新手,我需要使用选择排序对数组进行排序。随着算法的进展,我还需要显示每次迭代。但我似乎无法使以下代码工作。它在执行排序迭代部分的显示时抛出随机垃圾数字(请参见图片)。我已经搜索了很多,但似乎仍然无法确定此错误的原因。请帮忙。 Program execution
#include<stdio.h>
int main()
{
int s,i,j,t,temp,a[20];
printf("Enter the number of elements in the array\n");
scanf("%d",&s);
for(i=0;i<s;i++)
{
printf("Enter element %d\n",i+1);
scanf("%d",&a[i]);
}
printf ("Selection sort.\narray before sorting:\n");
for (i=0;i<s;i++)
printf ("%d ",a[i]);
printf ("\n");
for(i=0;i<s;i++)
{
printf ("After iteration %d\n", i+1);
for(j=i+1;j<s;j++)
{
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
for (t=0;t<s;t++);
printf ("%d ",a[t]);
printf ("\n");
}
printf("Array after sorting:\n");
for(i=0;i<s;i++)
printf ("%d ",a[i]);
return 0;
}
你的问题是这一行:
for (t=0;t<s;t++);
该行以 ;
结尾意味着 t 将计数到 s 而无需完成任何工作,并且在该循环之后将打印一行未初始化的值 a[s]
.