您的位置:首页 > 编程语言 > C语言/C++

C++学习记录10--冒泡排序

2017-03-13 09:08 211 查看
  冒泡排序(bubble sort)是最基本的排序方法,总结一下,对于有n个元素的数组,有两种方式:从左向右从右向左冒泡:

一、从前往后

  每次趟锁定该趟末尾的元素,重点
2/2/2,i<n-1,j<n-1-i


  1、从小到大排序。

#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
void coutarray(int a[])
{
for(int i=0;i<20;i++)
cout<<a[i]<<(i%5==4?'\n':'\t');
}
void bubble1(int a[],int n)
{
bool flag=true;
int temp;
for(int i=0;i<n-1&&flag;i++)
{
flag=false;
for(int j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
{
temp=a[j],a[j]=a[j+1],a[j+1]=temp;
flag=true;
}
}
}
void main()
{
int a[20]={0};
int n=10;
srand(time(0));
for(int i=0;i<n;i++)
cout<<(a[i]=rand()%101)<<(i%5==4?'\n':'\t');

bubble1(a,20);
cout<<"从前往后冒大泡到数组尾(从小到大):\n";
coutarray(a);
}


  2、从大到小排序。

void bubble2(int a[],int n)
{
bool flag=true;
int temp;
for(int i=0;i<n-1&&flag;i++)
{
flag=false;
for(int j=0;j<n-1-i;j++)
if(a[j]<a[j+1])
{
temp=a[j],a[j]=a[j+1],a[j+1]=temp;
flag=true;
}
}
}


二、从后往前

  每次趟锁定该趟最前端元素,重点
i=n-1,j>n-1-i


  1、从小到大排序。

void bubble3(int a[],int n)
{
bool flag=true;
int temp;
for(int i=n-1;i>0&&flag;i--)
{
flag=false;
for(int j=n-1;j>n-1-i;j--)
if(a[j]>a[j-1])
{
temp=a[j],a[j]=a[j-1],a[j-1]=temp;
flag=true;
}
}
}


  2、从小到大排序。

void bubble4(int a[],int n)
{
bool flag=true;
int temp;
for(int i=n-1;i>0&&flag;i--)
{
flag=false;
for(int j=n-1;j>n-1-i;j--)
if(a[j]<a[j-1])
{
temp=a[j],a[j]=a[j-1],a[j-1]=temp;
flag=true;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: