冒泡排序

来源:互联网 发布:淘宝防举报防排查 编辑:程序博客网 时间:2024/06/07 15:07

flag冒泡排序,

代码:

#include <cstdio>#include <algorithm>#include <iostream>using namespace std;int Sort(int A[],int n)   //flag标记是否存在 顺序相反的相邻元素{    int sum=0;bool flag=1;   //存在顺序相反的相邻元素for(int i=0;flag;i++){flag=0; for(int j=n-1;j>=i+1;j--)  //j>=i+1因为要和A[i]位置的元素比较    {    if( A[j]<A[j-1] )    {    swap( A[j] , A[j-1] );        flag=1;        sum++;}}}return sum;} int main(){    int n,sw,A[105];cin>>n;for(int i=0;i<n;i++)scanf("%d",&A[i]);sw=Sort( A,n );   //返回的值sum 付给swfor(int i=0;i<n;i++)printf("%d%c",A[i],i==n-1?'\n':' ');cout<<sw;return 0;} /*输入: 55 3 2 4 1输出:1 2 3 4 58*/ 

之前我一直用这样的写法,今天看到这个就想着整理下来了:

#include <cstdio>#include <algorithm>#include <iostream>using namespace std;int Sort(int A[],int n){int sum=0;for(int i=0;i<n-1;i++) for(int j=i+1;j<n;j++) { if( A[i]>A[j] ) { swap( A[i] , A[j] ); sum++;}  } return sum;}int main(){int n,sw,A[105];cin>>n;for(int i=0;i<n;i++)cin>>A[i];sw = Sort( A , n );for(int i=0;i<n;i++)printf("%d%c",A[i],i==n-1?'\n':' ');cout<<sw;return 0;}


原创粉丝点击