[算法]冒泡排序
2013-03-25 22:16
155 查看
冒泡排序,它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。不过,一路、二路归并排序、不平衡二叉树排序的速度均比冒泡排序快,且具有稳定性,但速度不及堆排序、快速排序。冒泡排序是经过n-1趟子排序完成的,第i趟子排序从第1个数至第n-i个数,若第i个数比后一个数大(则升序,小则降序)则交换两数
实例:
void BobbleSort (SeqList* _pList)
{
bool bExchangeFlag;
for(int i=0;i<_pList->Length-1;i++)//排序次数,最多排序(长度-1)趟排序
{
for(int j=0;j<_pList->Length-i;j++)
{
if(_pList-<data[j]>_pList->data[j+1])
{
int temp=_pList-<data[j];
_pList-<data[j]=_pList->data[j+1];
_pList->data[j+1]=temp;
bExchangeFlag=true;
}
}
if(!bExchangeFlag)
{
return ;
}
}
}
实例:
void BobbleSort (SeqList* _pList)
{
bool bExchangeFlag;
for(int i=0;i<_pList->Length-1;i++)//排序次数,最多排序(长度-1)趟排序
{
for(int j=0;j<_pList->Length-i;j++)
{
if(_pList-<data[j]>_pList->data[j+1])
{
int temp=_pList-<data[j];
_pList-<data[j]=_pList->data[j+1];
_pList->data[j+1]=temp;
bExchangeFlag=true;
}
}
if(!bExchangeFlag)
{
return ;
}
}
}
相关文章推荐
- 算法笔记 冒泡排序
- Java中的经典算法之冒泡排序
- 第16周项目1-验证算法(3)冒泡排序
- 经典算法之二:冒泡排序及优化
- 算法系列(三)排序算法上篇--冒泡排序插入排序和选择排序
- 冒泡排序的算法分析与改进(转载)
- 算法基础之冒泡排序
- 第十六周项目1-(3)验证算法冒泡排序
- 算法 排序算法之冒泡排序(三种算法 Java实现)
- 数据结构与算法——冒泡排序
- Java中的经典算法之冒泡排序(Bubble Sort)
- 常用算法之冒泡排序
- 算法笔记--冒泡排序
- 经典算法学习——冒泡排序
- 算法学习之旅,中级篇(3)-–冒泡排序
- Python算法 冒泡排序和选择排序
- 算法-冒泡排序
- 经典排序算法之——冒泡排序
- 算法--数组的冒泡排序和选择排序
- 算法之“冒泡排序”-2