首页 > 代码库 > C语言之冒泡排序算法

C语言之冒泡排序算法

一、什么是冒泡排序?
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列
的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。

二、冒泡排序的原理
   冒泡排序原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过
去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束,
其余类似看例子。
或者可以这样描述冒泡排序:
就是将第一个记录的关键字和第二个记录的关键字进行比较,
如果后面的比前面的小则交换,然后比较第二个和第三个,依次类推。
比完一趟,最大的那个已经放到了最后的位置,这样就可以对前面N-1个数再循环比较。 
稳定,时间复杂度 O(n^2)
(看到很多介绍冒泡排序的地方,包括教课书上个人感觉很多描述的都不是很清楚,也可能是我个人的理
解能力差一点,但是从网上搜到得这张图看起来很清晰了,转发一下希望能帮助到有的朋友)

技术分享

三、冒泡排序程序代码

#include<stdio.h>

void Maopao(int *a,int n);
int main(void)
 {  int k;
 int a[10]={2,4,6,8,0,1,3,5,7,9};
 for(k=0;k<10;k++)
 {
 printf("%d ",a[k]);
}
printf("\n");
Maopao(a,10);
for(k=0;k<10;k++)
 {
 printf("%d ",a[k]);
}
return 0;
 } 
void Maopao(int *a,int n)
 {
    int i,j,t;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
 t=a[j];
 a[j]=a[j+1];
 a[j+1]=t;
   }
}
}

 }



本文出自 “linux运维” 博客,转载请与作者联系!

C语言之冒泡排序算法