冒泡排序是最简单的排序算法,其思想是:从第一个数据开始依次比较数组中两相邻数据的大小,将较小数据放在前,较大数据放在后面;第一趟比较完成后,再从第二个数据开始依次比较两个相邻数据大小,小的放前面,大的放后面,这是第二趟 比较;直到第N-1趟比较完成即结束。
每一趟比较N-1次,共比较N-1趟。
例如对数组{12,8,23,19,17}进行冒泡排序:
第一趟比较结果:8,12,19,17,23
第二趟比较结果:8,12,17,19,23
第三趟比较结果:8,12,17,19,23
第四趟比较结果:8,12,17,19,23
算法的平均时间复杂度:O(n2)
下面是用C++实现的代码:
#include<iostream>
using namespace std;
//交换数组中两个元素位置
void swap(int *p,int *q)
{
int tmp=0;
tmp=*p;
*p=*q;
*q=tmp;
}
//冒泡排序
void sort(int *p,int n)
{
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-1;j++)
{
if(*(p+j)>*(p+j+1))
{
swap(p+j,p+j+1);
}
}
}
}
//输出数组
void print(int *p,int n)
{
for(int i=0;i<n;i++)
{
cout<<*p<<endl;
p++;
}
}
void main()
{
int num[10]={23,67,45,19,8,27,33,49,75,109};
int *p=num;
sort(p,10);
print(p,10);
}
程序输出结果为: