C语言冒泡排序

Posted AF丶风才

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言冒泡排序相关的知识,希望对你有一定的参考价值。

问题描述

对N个整数(数据由键盘输入)进行升降排序


问题分析

 对于N个数因其类型相同,我们可利用数组进行存储。冒泡排序是在两个相部元素之间进行比较交换的过程将个无序表变成有序表。
冒泡排序的思想:首先,从表头开始往后扫描数组,在扫描过程中逐对比较相领两个元素的大小。若相邻两个元素中,前面的元素大于后面的元素,则将它们互换, 称之为清去了一个逆序。在扫描过程中,不断地将两相邻元素中的大者往后移动,最后就将数组中的最大者换到了表的最后,这正是数组中最大元素应有的位置。然后,在剩下的数组元素中(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,


--------------------------------

Process exited after 12.9 seconds with return value 0

请按任意键继续. . .


以上是关于C语言冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章

C语言冒泡排序法代码

c语言冒泡排序最终结果错误

冒泡排序和选择排序(C语言)

c语言冒泡排序法代码一直排序错误,有时只能排前两个,不明白原因,请问究竟哪里写错了,谢谢!

[c语言]总结冒泡排序的一些细节

冒泡排序法