方法介绍
冒泡排序又称起泡法,它从头到尾每次都对相邻的两个数进行比较,将较大的那个数换到后一个元素中(当然也可以将最小数换到后面,这里仅以从小到大的排序为例)。每一轮比较都会找出最大数放在这些数后面。
如果比较N个数,则需要比较(N-1)轮。
第一轮比较(N-1)次,在N个数中找出最大数放在最后。 第二轮对剩下的(N-1)个数进行比较需要比较【(N-1)-1】次,将最大的数放入倒数第二个数组元素中。
............
以此类推,第(N-1)轮需要进行1次比较,将剩下的两个数,最大的放入第二个数组元素,最小的在第一个数组元素。
例题和代码实现
从键盘输入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语言的题型,方法等,有意愿学习,交流的,可以关注,收藏。