排序算法大集锦_交换类——冒泡排序

来源:互联网 发布:皮尔斯数据 编辑:程序博客网 时间:2024/05/20 07:14

冒泡排序是在高中时代就接触到的一种排序,较为简单,相对其它排序要容易理解


这一系列博客的特点就是——给出每趟排序的结果


本来想着好好写一下过程,弄个图片什么的,不过觉得网上的解析太多了,都比较好,所以这些博客就算是对自己的总结吧。


#include <stdio.h> void BubbleSort(int *m, int n){    int i,j;    for(i=0;i<n-1;i++)    {        for(j=1;j<n-i;j++)            if(m[j]<m[j-1])            {                m[j]=m[j]^m[j-1];                m[j-1]=m[j]^m[j-1];                m[j]=m[j]^m[j-1];              }        for(int t=0;t<10;t++)            printf("%d ",m[t]);        printf("\n");    }} int main(){    int i;    int a[10]={2,8,5,7,4,3,1,9,6,10};    for(i=0;i<10;i++)        printf("%d ",a[i]);         printf("\n排序后\n");         BubbleSort(a,10);         for(i=0;i<10;i++)        printf("%d ",a[i]);         printf("\n");         return 0;}

运行之后




这里是可以对sort做个改进的


void BubbleSort(int *m, int n){    int i,j;    bool flag;    for(i=0;i<n-1;i++)    {        flag=true;        for(j=1;j<n-i;j++)            if(m[j]<m[j-1])            {                m[j]=m[j]^m[j-1];                m[j-1]=m[j]^m[j-1];                m[j]=m[j]^m[j-1];                  flag=false;            }            for(int t=0;t<10;t++)                printf("%d ",m[t]);            printf("\n");        if(flag)            break;    }}

运行之后



1 2
原创粉丝点击