C语言冒泡排序。

我们期末考试的时候要考关于冒泡排序的题目。
就是用C语言做一个程序,输入学生的姓名和成绩,系统会自动按照成绩有大到小来排出名次。
谁有源代码,谢谢。Win-TC和VC++环境下的都可以,最好是2个都有。
最好是有直接能运行的源代码,然后源代码的后面有注释。源代码可以直接运行。然后,谢谢1楼的回答的这么仔细。

第1个回答  2019-11-17
#include <stdio.h>
int main()
{
int a,t,i,j,n[1000];
scanf("%d",&a);
for(i=1;i<=a;i++)
{
scanf("%d",&n[i]);
}
for(i=1;i<=a;i++)
{
for(j=1;j<=a-i;j++)
{
if(n[j]>n[j+1])
{
t=n[j];
n[j]=n[j+1];
n[j+1]=t;
}
}
}
for(i=1;i<=a;i++)
{
printf("%d ",n[i]);
}
return 0;
}
第2个回答  2019-11-09

第3个回答  2018-03-07
可以在优酷里搜“C语言冒泡排序”视频,刘刚老师讲的那个,思路清晰,不到五分钟就能看完,通俗易懂。我就是在视频上自己学会的
第4个回答  推荐于2019-10-21

冒泡排序的思想:

首先,从表头开始往后扫描数组,在扫描过程中逐对比较相领两个元素的大小。

若相邻两个元素中,前面的元素大于后面的元素,则将它们互换, 称之为清去了一个逆序。在扫描过程中,不断地将两相邻元素中的大者往后移动,最后就将数组中的最大者换到了表的最后,这正是数组中最大元素应有的位置。

然后,在剩下的数组元素中(n-1个元素)重复上面的过程,将次小元素放到倒数第2个位置。不断重复上述过程,直到剩下的数组元素为0为止,此时的数组就变为了有序。假设数组元素的个数为西,在最坏情况下需要的比较总次数为: (n-1)+(n- 2)...+2+1)- n(n-1)/2。

源代码如下

冒泡法排序:

#include <stdio.h>

int main ()

{

int a[10];

int i, j, t;

printf ("请输入十个数:\n");

for (i = 0; i < 10; i++)

{

printf ("a[%d]=", i+1);

scanf ("%d",&a[i]);

}

for (j = 0;j < 9; j++)

for (i = 0; i < 9 - j; i++)

if (a[i] > a[i+1])

{

t = a[i];

a[i] = a[i+1];

a[i+1] = t;

}

printf ("由小到大的顺序为:\n");

for (i = 0; i < 10; i++)

{

printf ("%d,",a[i]);

}

printf ("\n");

return 0;

运行结果

请输入十个数:

a[1]=7

a[2]=8

a[3]=9

a[4]=6

a[5]=5

a[6]=4

a[7]=1

a[8]=2

a[9]=3

a[10]=99

由小到大的顺序为:

1,2,3,4,5,6,7,8,9,99,

扩展资料:

冒泡排序算法的原理如下:

1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

3、针对所有的元素重复以上的步骤,除了最后一个。

4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

参考资料来源:

本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网