冒泡排序

来源:互联网 发布:mysql数据库程序设计 编辑:程序博客网 时间:2024/05/20 16:40
/*
冒泡排序:
从头扫描 顺序比较相邻两元素大小
*/
# include <iostream>
using namespace std;
int sum = 0;
//打印数组元素
void printArray(int r[])
{
 for(int i=0;i<10;i++)
  cout<<r[i]<<" ";
     cout<<endl;
}
//交换相邻元素位置1
/*void swap(int &a,int &b)
{
 int tmp = a;
    a = b;
 b = tmp;
}*/
//交换相邻元素位置1
void swap(int *a,int *b)
{
 int tmp = *a;
 *a = *b;
 *b= tmp;
}
void BubbleSort(int r[],int length)
{
 int n = length;
 //如果一趟冒泡排序,没有发现一个逆序的,则结束冒泡排序!change = false; 最多进行n-1趟
 bool change = true;
 for(int i=1;i<=n-1&&change;i++)
 {
  sum++;//记录进行了多少趟
  change = false;
  for(int j=0;j<n-i;j++)
  {
   if(r[j]>r[j+1])
   {
   // swap(r[j],r[j+1]);
    swap(&r[j],&r[j+1]);
    change = true;
   }
  }
  //如果change=true才输出
  if(change)
  {
  cout<<"第"<<i<<"趟冒泡排序后:"<<endl;
  printArray(r);
  }
 }
}
void main()
{
 int r[] = {48,62,35,77,55,14,35,98,22,40};
 cout<<"排序前:"<<endl;
 printArray(r);
    BubbleSort(r,10);
 cout<<"排序后:"<<endl;
 printArray(r);
 cout<<"共进行"<<sum<<"趟排序"<<endl;
}
原创粉丝点击