#include<stdio.h>
#include<conio.h>
int main( )
{
int a[100];
int i, j, temp, n ;
printf("how many numbers you want to sort : \n");
scanf("%d",&n);
printf("Enter %d number values you want to sort\n", n);
for(j=0; j<n; j++)
scanf("%d",&a[j]);
for(j=1;j<n;j++)
我们怎么知道上面提到的for循环必须重复n次,怎么应该为此开发逻辑,我知道内部for循环只会帮助对列表中的元素进行一次排序,那为什么我们要重复内循环n次
{
for(i=0; i<n; i++)
{
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
printf ( "\n\nArray after sorting:\n") ;
for ( i = 0 ; i <n ; i++ )
printf ( "%d\t", a[i] ) ;
getch();
}
答案 0 :(得分:0)
在内部循环中,您将找到最大值。你不能确定其他数字是否已经分类。
其他版本(更快):
do
for (i = 0; i < n-1; i++) do:
if A[i] > A[i+1] then
swap(A[i], A[i+1])
end if
end for
n = n-1
而n> 1
(不检查以前循环的最大值)
答案 1 :(得分:0)
为了理解该代码,请将输出数组当前值的代码提取到单独的函数中。然后,每次交换两个元素时,都会输出一条消息,说明您交换的元素以及生成的数组现在的样子。
您不仅会看到它的排序方式,还会在代码中发现错误。我会尽力帮助你,但我不想破坏你的学习经历。