首页 > 编程知识 正文

希尔排序过程图解,冒泡排序例题讲解

时间:2023-05-03 20:05:29 阅读:140656 作者:1663

此问题需要使用冒泡方法进行排序,按从小到大的顺序对给定的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;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。