您的位置:首页 > 其它

算法学习之旅,中级篇(3)-–冒泡排序

2017-08-18 22:22 302 查看
介绍

重复遍历数列,一次比较两个数,顺序有误就交换位置。

分析

首先,比较相邻的元素,如果不符合定义的排序规则(比如从小到大,如果后一个数比前一个数小,就是不符合定义的排序规则),就交换两个数的位置。

然后,对每一对相邻的元素做相同的比较操作,从开始第一对到倒数一对。最后的元素会是最小或者最大的数。

最后,对所有的元素都进行相同的比较操作,知道没有任何一个数需要比较后,冒泡排序就完成了。

代码

#include<stdio.h>
#include<stdlib.h>
#define SIZE 8
void Bubble_Sort(int a[],int n)
{
int i,j,temp;
for(j=0;j<n-1;j++)
{
for(i=0;i<n-1-j;i++)
{
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
return;
}
int main()
{
int number[SIZE]={95,2,4,3,6,43,2,4};
int i;
for(i=0;i<SIZE-1;i++)
printf("%d ",number[i]);
printf("%d\n",number[i]);
Bubble_Sort(number,SIZE);
for(i=0;i<SIZE-1;i++)
printf("%d ",number[i]);
printf("%d\n",number[i]);
system("pause");
return 0;
}


遇到的问题

冒泡排序是一种稳定的排序算法,最坏的时间复杂度是逆序重新排序,每个元素都要交换一次,时间复杂度是o(n^2);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  冒泡排序 算法