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

来源:互联网 发布:阿里云怎么禁止ip访问 编辑:程序博客网 时间:2024/06/05 15:01

  冒泡排序(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;            }    }}
0 0