一、问题描述:
对N个整数(数据由键盘输入)进行升序排列。
二、设计思路:
对于N个数因其类型相同,我们可利用数组进行存储。冒泡排序是在两个相邻元素之间进行比较交换的过程将一个无序表变成有序表。
冒泡排序的思想:首先,从表头开始往后扫描数组,在扫描过程中逐对比较相邻两个元素的大小。若相邻两个元素中,前面的元素大于后面的元素,则将它们互换,称之为消去了一个逆序。在扫描过程中,不断地将两相邻元素中的大者往后移动,最后就将数组中的最大者换到了表的最后,这正是数组中最大元系应有的位置。然后,在剩下的数组元素中(n-1个元素)重复上面的过程,将次小元素放到倒数第2个位置。不断重复上述过程,直到剩下的数组元素为0为止,此时的数组就变为了有序。假设数组元素的个数为n,在最坏情况下需要的比较总次数为:((n-1)+(n-2)+...+2+1)=n(n-1)/2。
三、程序流程图
四、代码实现
#include<stdio.h>
#define N 10
main()
{
int i,j,a[N],t,count=0;
printf("请为数组元素赋初值:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=1;i<=N-1;i++)
for(j=0;j<N-i;j++)
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
printf("经过交换后的数组元素为:\n");
for(i=0;i<N;i++)
{
count++;
printf("%d ",a[i]);
if(count%5==0)
printf("\n");
}
printf("\n");
}
标签:4.19,元素,扫描,冒泡排序,相邻,数组,printf,打卡 From: https://www.cnblogs.com/wanbeibei/p/17334501.html