冒泡排序

来源:互联网 发布:农产品网络销售方案 编辑:程序博客网 时间:2024/06/01 07:55
#include<iostream>using namespace std;//交换元素void swap(int &a,int &b){ int t; t=a;a=b;b=t;}//输出元素void print(int s[],int n){ for(int i=0;i<n;i++) cout<<s[i]<<'\t'; cout<<endl;}//经典的冒泡算法,n个元素,比较n-1趟,每趟比较n-i次void Bubblesort1(int s[],int n){ for(int i=1;i<=n;i++) for(int j=0;j<n-i;j++) if(s[j]>s[j+1]) swap(s[j],s[j+1]); print(s,n);}//改进的冒泡算法,使用标记,在有序无需交换时退出void Bubblesort2(int s[],int n){ int k=n;  bool flag=true;  while(flag)  {   flag=false;   for(int i=1;i<n;i++)    if(s[i-1]>s[i]){swap(s[i-1],s[i]);flag=true;}  n--;//去掉已经排好的  }  print(s,k);}//改进的冒泡算法,记录已经有序的位置,只比较无序的元素void Bubblesort3(int s[],int n){  int flag=n,k;  while(flag>0)  {k=flag;   flag=0;   for(int i=1;i<k;i++)    if(s[i-1]>s[i]){swap(s[i-1],s[i]);flag=i;}}  print(s,n);}//主函数int main(){int a[4]={3,2,1,4};Bubblesort1(a,4);Bubblesort2(a,4);Bubblesort3(a,4);}

0 0
原创粉丝点击