内容目录
方法介绍
例题和代码实现?
1.方法介绍
冒泡排序又称起泡法,它从头到尾每次都对相邻的两个数进行比较,将较大的那个数换到后一个元素中(当然也可以将最小数换到后面,这里仅以从小到大的排序为例)。每一轮比较都会找出最大数放在这些数后面。
如果比较N个数,则需要比较(N-1)轮。
第一轮比较(N-1)次,在N个数中找出最大数放在最后。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?第二轮对剩下的(N-1)个数进行比较需要比较【(N-1)-1】次,将最大的数放入倒数第二个数组元素中。
............?
以此类推,第(N-1)轮需要进行1次比较,将剩下的两个数,最大的放入第二个数组元素,最小的在第一个数组元素。
2.例题和代码实现
从键盘输入8个整数:1 4 6 -1 9 7 5 2 从小到大排序
#include <stdio.h>
int main()
{
int i,j,t,a[8];
printf("排序的数组:");
for(i=0;i<8;i++)
{
scanf("%d",&a[i]);
}
printf("\n");
for(i=0;i<7;i++)/*共需比较7轮,负责进行的轮数*/
{
for(j=0;j<7-i;j++)/*第i轮需要比较的次数:7-i*/
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1]; /*前一个元素比后一个元素大,就交换元素 */
a[j+1]=t;
}
}
}
printf("排序后的数组:");
for(i=0;i<8;i++)
{
printf("%3d",a[i]);/*3d是为了控制域宽,使输出的数组排列不那么紧凑,3可以不加*/
}
return 0;
}
?
冒泡排序比较简单,其实现原理就像水中冒泡,越到水面水泡越小。后续还会发一些关于C语言的题型,方法等,有意愿学习,交流的,可以关注,收藏。
|