冒泡排序

冒泡排序(小----->大)的思想是,对于一个有n个关键字的序列,需要进行n-1轮比较,第i轮需要比较n-i次;每次从低到高分别比较相邻的两个关键字,如果不满所要求的就将其交换;直到整个序列满足所要求的为止;

例如下面的代码:

 #include<iostream.h>
#include<stdlib.h>
#include<malloc.h>
int *arr=NULL;
int number;
void sort()
{

 int temp=0;
 bool flag;
 cout<<"输入数据的个数:"<<endl;
 cin>>number;
 arr=(int *)calloc(number,sizeof(int));//动态分配内存
 if(arr==NULL){cout<<"内存分配失败!"<<endl;exit(0);}
 for(int i=1;i<=number;i++)
  cin>>arr[i];
 cout<<endl;
 for(int i1=1;i1<=number-1;i1++)
 {
        flag=false;//
  for(int i2=1;i2<=number-i1;i2++)
   if(arr[i2]>arr[i2+1])
   {temp=arr[i2];arr[i2]=arr[i2+1];arr[i2+1]=temp;flag=true;}
   if(!flag)return;//
 }
}
void main()
{
 sort();//
 cout<<"从小到大的顺序:"<<endl;
 for(int i3=1;i3<=number;i3++)
 cout<<arr[i3]<<" ";
 cout<<endl;
}


 

若在某一趟排序中未发现气泡位置的交换,则说明待排序的无序区中所有气泡均满足轻者在上,重者在下的原则,因此,冒泡排序过程可在此趟排序后终止。为此,在下面给出的算法中,引入一个布尔量exchange,在每趟排序开始前,先将其置为FALSE。若排序过程中发生了交换,则将其置为TRUE。各趟排序结束时检查exchange,若未曾发生过交换则终止算法,不再进行下一趟排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霍师傅hgd613

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值