C 针对简单排序算法的特定for循环
这是一个将表格从最大值排序到最小值的简单代码。我很困惑,因为我的教授使用了C 针对简单排序算法的特定for循环,c,C,这是一个将表格从最大值排序到最小值的简单代码。我很困惑,因为我的教授使用了for(I=0;I你的教授是正确的,尽管你的方法也很有效;只是更笨拙: 假设j的起始值为i+1,以避免越界访问数组a(其行为未定义),您需要将i限制为小于9,将i+1限制为小于10。基本上,您的教授限制了前者,但您限制了后者 气泡排序是这样工作的,因为一旦外部循环处理了倒数第二个元素,就会建立排序。转换我的注释: 通常,这类算法不会在最后一个元素停止,而是在前一个元素停止。事实上,在这一点上,第n-1个元素已经相对于第n个
for(I=0;I你的教授是正确的,尽管你的方法也很有效;只是更笨拙:
假设j
的起始值为i+1
,以避免越界访问数组a
(其行为未定义),您需要将i
限制为小于9,将i+1
限制为小于10。基本上,您的教授限制了前者,但您限制了后者
气泡排序是这样工作的,因为一旦外部循环处理了倒数第二个元素,就会建立排序。转换我的注释:
通常,这类算法不会在最后一个元素停止,而是在前一个元素停止。事实上,在这一点上,第n-1个元素已经相对于第n个元素进行了排序。因此,这两种算法都可以工作,但是“-1”更有效,因为您跳过了一个无用的迭代。对于(i=0;通常,这类算法不会在最后一个元素停止,而是在前一个元素停止。事实上,在这一点上,第n-1个元素已经相对于第n个元素进行了排序。因此,这两种算法都可以工作,但“-1”更有效,因为您跳过了一个无用的迭代。进行向上投票。您第一次得到了正确的答案(与我不同)。
int a[10];
int i, j, t;
for(i=0; i<10; i++)
{
scanf("%d", &a[i]);
}
for(i=0; i<10-1; i++)
{
for(j=i+1; j<10; j++)
{
if (a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for(i=0; i<10; i++)
{
printf("%d\n", a[i]);
}