冒泡排序通过依次比较相邻元素的大小值,将指定的值(二者中的较大或较小值,这要取决于想要升序还是降序)不断向后移动,在下一次排序时最后的值已经确定是最大值或最小值,所以下一次的排序比较不再与最后一个值比较。循环往复直到所有元素排列完毕(即最后一个未排列数也是第一个未排列数的时候)。
升序的冒泡排序
#include<stdio.h> int main(){//输入5个数升序输出 int a[10]; for(int i=0;i<5;i++) scanf("%d",&a[i]); for(int i=4;i>=0;i--){//冒泡排序开始 for(int j=0;j<i;j++){ if(a[j]>a[j+1]){//如果后面的值小于前面的值 int tem=a[j]; //两个元素交换,tem为临时变量,便于交换 a[j]=a[j+1]; a[j+1]=tem; } } }//冒泡排序结束 for(int i=0;i<5;i++) printf("%d ",a[i]); return 0; }
降序的冒泡排序
#include<stdio.h> int main(){//输入5个数降序输出 int a[10]; for(int i=0;i<5;i++) scanf("%d",&a[i]); for(int i=4;i>=0;i--){//冒泡排序开始 for(int j=0;j<i;j++){ if(a[j]<a[j+1]){//如果后面的值大于前面的值 int tem=a[j]; //两个元素交换,tem为临时变量,便于交换 a[j]=a[j+1]; a[j+1]=tem; } } }//冒泡排序结束 for(int i=0;i<5;i++) printf("%d ",a[i]); return 0; }