亲宝软件园·资讯

展开

C语言冒泡排序优解 深入了解C语言冒泡排序优解

小尹同学⁣ 人气:0
想了解深入了解C语言冒泡排序优解的相关内容吗,小尹同学⁣在本文为您仔细讲解C语言冒泡排序优解的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:C语言冒泡排序,C语言优解,下面大家一起来学习吧。

1:直接冒泡

 #include<stdio.h>
int main()
{
    int i,j;
    int t;
    int a[]={10,9,8,7,6,5,4,3,2,1};//此排序实现顺序排序
    int s=sizeof(a)/sizeof(a[0]);//求数组元素个数
    for(i=0;i<s-1;i++)//确定排序的趟数
    {
        //下面为每趟冒泡排序
        for(j=0;j<s-1-i;j++)
        {
            if(a[j]>a[j+1])
            {
                t=a[j];a[j]=a[j+1];a[j+1]=t;
            }
        }
    }
    for(i=0;i<s;i++)//验证结果
    {
        printf("%d ",a[i]);
    }
    return 0;
}

2:函数冒泡

#include<stdio.h>
void mppx(int a[],int s)
{
    int i,j;
    int t;
    for(i=0;i<s-1;i++)
    {
        for(j=0;j<s-1-i;j++)
        {
            if(a[j]>a[j+1])
            {
                t=a[j];a[j]=a[j+1];a[j+1]=t;
            }
        }
    }
}
int main()
{
    int a[]={10,9,8,7,6,5,4,3,2,1};//此排序实现顺序排序
    int i;
    int s=sizeof(a)/sizeof(a[0]);
    mppx(a,s);//冒泡排序函数,这里a是传递a数组首元素的地址&a[0]
    for(i=0;i<s;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}

3:冒泡优化

 #include<stdio.h>
void mppx(int a[],int s)
{
    int i,j;
    int t;
    for(i=0;i<s-1;i++)
    {
        int f=1;//假设在一趟排序后数据已经有序
        for(j=0;j<s-1-i;j++)
        {
            if(a[j]>a[j+1])
            {
                t=a[j];a[j]=a[j+1];a[j+1]=t;
                f=0;//当f=0时,表示数组还没有有序
            }
        }
        if(f==1)//当有序的时候就直接跳出来,提高效率
        {
            break;
        }
    }
}
int main()
{
    int a[]={10,9,8,7,6,5,4,3,2,1};
    int i;
    int s=sizeof(a)/sizeof(a[0]);
    mppx(a,s);
    for(i=0;i<s;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}

排序后结果·

总结:

冒泡排序的核心部分就是双重嵌套循环,因此复杂度比较高。

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注的更多内容!

加载全部内容

相关教程
猜你喜欢
用户评论