此问题需要使用冒泡方法进行排序,按从小到大的顺序对给定的n个整数进行排序并输出,然后输出排序中每个步骤的中间结果。
气泡排序的算法步骤如下所示。
步骤1 )将未排序的n个(a[0]a[n1] )中从a[0]开始依次相邻的2个个数进行比较,如果相邻的要素不满足顺序要求,则对它们进行交换。 这次操作后,排列中的最大要素为a[n1];
步骤2 )把剩馀的未排序的n-1个数(a[0]a[n2] )中从a[0]开始按顺序比较两个相邻的个数,并且如果相邻元素不符合排序要求,则其互换。 此次操作后,a[0]a[n2]中最大元素为a[n2];
.
(I )在剩下的未排序NK的个数(a[0]a[ni] )中,从a[0]开始按顺序比较两个相邻的个数,并且如果相邻元素不符合顺序要求,则将它们互换。 此次操作后,a[0]a[ni]中最大元素为a[ni];
.
步骤n1 :将两个剩馀的未排序的个数(a [0]-a [1] )中的两个进行比较,并在不满足排序要求的情况下更换它们。 此次操作后,a[0]a[1]中的最大元素向a[1]“鼓泡”。
输入格式:在第一行输入小于或等于10的正整数n。 第2行给出n个整数,其间用空格隔开。
输出格式:在每行输出排序中相应步骤的中间结果,即每个步骤之后的a[0]a[n1]的值。 相邻数字之间有空格,行尾不应有多余的空格。
输入实例: 58 7 6 0 1输出实例: 76018601780167807801678所谓气泡排序:将两个相邻数字进行比较,按一定顺序排列,如果最后的顺序从小到大,则为http://www.Sina.com/http://www.3358 3分钟完全理解冒泡排序- stone1234567890 -博客公园(cnblogs.com) )。
详细的代码编写:
#includestdio.h
int main () )
{
int n=0,temp=0;
int a[10]={ 0 };
scanf('%d ',n );
for(intI=0; i n; I )
{
scanf('%d ',a[i] );
}
if(n==1) )。
{
printf('%d ',a[0] ); //因为排序一定需要两个以上的数,不能用一个数排序,所以要分别出来考虑
}
for(intI=0; i n - 1; I )
//外循环是我们排队的次数
/例如,如果我们输入5个数字,我就需要排列4次。 如果把四个数排列起来,最后一个数的位置也就决定了
for(intj=0; j n - 1 - i; j )
//按内循环进行比较并排名。
//j=n-1-i n-1是下标(我们按下标计算) )。
//n-1-i表示当我们的外循环结束时,我们排列了数据,但在下一次排序中可以不排列该数据
if(a ) if(a ) j1 ) )
{
temp=a[j 1];
a[j 1]=a[j];
a[j]=temp;
}
}
for(intI=0; i n; I )
{
if(I==0) ) )。
printf('%d ',a[i] );
else
printf('%d ',a[i] );
if(I==n-1 ) ) ) )。
打印((n );
}
}
返回0;
}