啊哈算法-冒泡排序

冒泡排序通过依次比较相邻元素的大小值,将指定的值(二者中的较大或较小值,这要取决于想要升序还是降序)不断向后移动,在下一次排序时最后的值已经确定是最大值或最小值,所以下一次的排序比较不再与最后一个值比较。循环往复直到所有元素排列完毕(即最后一个未排列数也是第一个未排列数的时候)。

升序的冒泡排序

#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; 
}

 

上一篇:序列密码之A5


下一篇:每日一题---剑指 Offer 32 - III. 从上到下打印二叉树 III[力扣][Go]