算法学习之冒泡排序的C实现

Posted Andrew_qian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法学习之冒泡排序的C实现相关的知识,希望对你有一定的参考价值。

冒泡排序是属于比较类的排序方式,简单易懂,但是效率不是很高,不及快排。

#include "stdio.h"
#include "time.h"

void bubble(int *a,int len);//排序  
void swap(int *p1,int *p2);//交换数值  

int main()
{
    clock_t start,finish;
    double totaltime;
    start=clock();
    
    
    int a[] = {5,45,12,36,2,7,91,8,44,77,35,65,78,12};
    int length = sizeof(a)/sizeof(int);//求数组长度  
    
    printf("原序列为:");
    for(int i=0;i<length;i++)
    {
        printf("%3d",a[i]);
    }

    bubble(a,length);
    
    printf("\\n冒泡排序后:");
    for(int i=0;i<length;i++)
    {
        printf("%3d",a[i]);
    }
    printf("\\n");
    
    
   finish=clock();
   totaltime=(double)(finish-start)/CLOCKS_PER_SEC;  
   printf("\\n程序运行的时间为: %.5f 秒\\n",totaltime);
   
}


void swap(int *p1,int *p2)//注意交换数值函数,调用时传入参数是地址,实际就是交换两数值的地址   
{
    int temp;
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}


void bubble(int *a,int len)//数组名表示数组第一个元素的地址,所以用int *a 
{
    int i,j;

    for(i=0;i<len;i++)
    {
        for(j=0;j<len-i-1;j++)//注意是 len-i-1, 想一下就明白了  
        {
            if(a[j]>a[j+1])
                swap(&a[j],&a[j+1]);//交换两数值的地址     
        }
    }
}

 

实现结果:

 

以上是关于算法学习之冒泡排序的C实现的主要内容,如果未能解决你的问题,请参考以下文章

算法学习之排序:冒泡排序

python学习之排序算法

算法学习之希尔排序的简洁实现

[一周一算法]算法导论学习之计数排序

牛耕田学习之 shell冒泡排序

排序学习之---冒泡排序