Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 针对简单排序算法的特定for循环_C - Fatal编程技术网

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