排序算法-冒泡排序
来源:互联网 发布:网络拍卖平台靠谱 编辑:程序博客网 时间:2024/05/30 05:22
#include<iostream>
using namespace std;
//冒泡排序
/*
冒泡排序的思想很简单,就是不断将最大的元素往后移动,第一次扫描,会将最大的元素移动到最后,然后再用类似的方式排序前n-1个元素。
当然冒泡排序实现可以通过递归实现,也可以通过循环迭代实现。
*/
//使用递归实现的冒泡排序
void BubbleSortByRecursion(int list[],int size)
{
if(size<=1)//当仅剩一个元素时无需排序
return;
for(int i=0;i<size-1;i++)//通过冒泡的形式,将最大的元素放到需要排序数组的最后边
{
if(list[i]>list[i+1])
{
int temp=list[i];
list[i]=list[i+1];
list[i+1]=temp;
}
}
BubbleSortByRecursion(list,size-1);//将剩下的未排序的数组进行排序
}
//使用迭代实现的冒泡排序
void BubbleSortByIteration(int list[],int size)
{
for(int i=size;i>0;i--)//要排序的元素个数不断减少
for(int j=0;j<i-1;j++)//将最大元素移动到要排序的部分的最后边
if(list[j]>list[j+1])
{
int temp=list[j];
list[j]=list[j+1];
list[j+1]=temp;
}
}
//冒泡排序的改进
/*
要知道冒泡排序的平均复杂度为O(n*n),可以通过一定的方式进行改善,如当某次排序移动元素的个数为0时,表示已经排好序,应停止。
*/
//优化后的冒泡排序
void BubbleSortOptimize(int list[],int size)
{
int nCount=0;
for(int i=size;i>0;i--)
{
nCount=0;
for(int j=0;j<i-1;j++)
if(list[j]>list[j+1])
{
int temp=list[j];
list[j]=list[j+1];
list[j+1]=temp;
nCount++;
}
if(nCount==0)//当移动次数为0时,排序停止
break;
}
}
//此外快速排序也是对冒泡排序的改进,通过比较用递归实现的冒泡排序和用递归实现的快速排序,就能明白这一点了
//快速排序可参看:http://blog.csdn.net/u010968153/article/details/51767726
int main()
{
int list[]={5,6,6,4,3,1,2,6,7,8};
BubbleSortOptimize(list,10);
for(int i=0;i<10;i++)
cout<<list[i]<<" ";
cout<<endl;
}
using namespace std;
//冒泡排序
/*
冒泡排序的思想很简单,就是不断将最大的元素往后移动,第一次扫描,会将最大的元素移动到最后,然后再用类似的方式排序前n-1个元素。
当然冒泡排序实现可以通过递归实现,也可以通过循环迭代实现。
*/
//使用递归实现的冒泡排序
void BubbleSortByRecursion(int list[],int size)
{
if(size<=1)//当仅剩一个元素时无需排序
return;
for(int i=0;i<size-1;i++)//通过冒泡的形式,将最大的元素放到需要排序数组的最后边
{
if(list[i]>list[i+1])
{
int temp=list[i];
list[i]=list[i+1];
list[i+1]=temp;
}
}
BubbleSortByRecursion(list,size-1);//将剩下的未排序的数组进行排序
}
//使用迭代实现的冒泡排序
void BubbleSortByIteration(int list[],int size)
{
for(int i=size;i>0;i--)//要排序的元素个数不断减少
for(int j=0;j<i-1;j++)//将最大元素移动到要排序的部分的最后边
if(list[j]>list[j+1])
{
int temp=list[j];
list[j]=list[j+1];
list[j+1]=temp;
}
}
//冒泡排序的改进
/*
要知道冒泡排序的平均复杂度为O(n*n),可以通过一定的方式进行改善,如当某次排序移动元素的个数为0时,表示已经排好序,应停止。
*/
//优化后的冒泡排序
void BubbleSortOptimize(int list[],int size)
{
int nCount=0;
for(int i=size;i>0;i--)
{
nCount=0;
for(int j=0;j<i-1;j++)
if(list[j]>list[j+1])
{
int temp=list[j];
list[j]=list[j+1];
list[j+1]=temp;
nCount++;
}
if(nCount==0)//当移动次数为0时,排序停止
break;
}
}
//此外快速排序也是对冒泡排序的改进,通过比较用递归实现的冒泡排序和用递归实现的快速排序,就能明白这一点了
//快速排序可参看:http://blog.csdn.net/u010968153/article/details/51767726
int main()
{
int list[]={5,6,6,4,3,1,2,6,7,8};
BubbleSortOptimize(list,10);
for(int i=0;i<10;i++)
cout<<list[i]<<" ";
cout<<endl;
}
1 0
- 排序算法--冒泡排序
- 排序算法-冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法-冒泡排序
- 排序算法 冒泡排序
- 排序算法-- 冒泡排序
- 排序算法-冒泡排序
- 排序算法---冒泡排序
- 排序算法-冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法 冒泡排序
- 排序算法-冒泡排序
- 中国互联网大会上的APP质量主题分享
- POJ 3270 Cow Sorting
- 【转】ORACLE性能优化之SQL语句优化
- 【翻译+笔记】【高质量Objective-C-2】第1条:了解Objective-C语言的起源-Maoyingyong
- C# MailMessage Attachment 中文名附件发邮件-Firefox中文显示正常,网页打开邮件附件中文名乱码
- 排序算法-冒泡排序
- size_t 数据类型深思
- UITabbarController点击tabbar选项返回当前viewController最顶层
- Java资源大全中文版
- PHP遍历memcache
- <context:component-scan>使用说明
- activemq调优
- CSS布局
- java ==和quals的区别