您的位置:首页 > 理论基础 > 数据结构算法

C++数据结构-冒泡排序及其优化

2018-12-05 09:55 148 查看
#include <iostream>
#define N 12

using namespace std;
/**
*46,74,16,53,14,26,40,53,86,65,27,34从小到大排序
*冒泡排序
*冒泡排序的优化(用一个标记值flag)
*/
void swapNum(int &num1,int &num2)
{
int temp=num1;
num1=num2;
num2=temp;
}
void bubble_sort(int *nums)
{
for(int i=0;i<=N-1;i++)       //N个元素排序,一共要冒泡N-1次
{
int flag=0;               //多了flag主要是起优化作用
for(int j=0;j<=N-i-1;j++) //每一次都是从头开始
{
if(nums[j]>nums[j+1])
{
swapNum(nums[j],nums[j+1]); //交换位置,这里传入的是引用,因为函数内部的操作要影响外部
flag=1;           //当flag为1表示,这一轮有交换过
}
}
if(flag==0)               //当flag为0表示,这一轮没有交换过,表示这已经是有序的,后面的操作是无用功
break;
}
}
int main()
{
//初始化
int nums[N]={46,74,16,53,14,26,40,53,86,65,27,34};
bubble_sort(nums);
//显示排序结果
for(int i=0;i<N;i++)
{
cout<<nums[i]<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: