冒泡排序

来源:互联网 发布:SQL中怎么定义联合主键 编辑:程序博客网 时间:2024/06/15 20:30

直接写代码, 

 

void BulleSort(int a[] ,int n){int i,j;for(i=1;i<n;i++){for(j=0;j<n-i;j++){if(a[j]>a[j+1])SWAP(&a[j],&a[j+1]);}}}void SWAP(int *a,int *b){int temp ;temp = *a;*a=*b;*b=temp;}


 改进下 ,加一个 排序标记。

#include<iostream>using namespace std;void BubbleSort(int a[],int n){int i=1,tag=0,//数据转换标记j;do{for(j=n-1;j>=i;j--)if(a[j]<a[j-1]){swap(a[j],a[j-1]);tag=1;}i++;}while(i<=n && tag==1);}void swap(int &a ,int &b){     int temp; temp = a; a=b; b=temp;}int main(){int a[]={1,2,4,5,6,7,8,9};int len = sizeof(a)/sizeof(int);BubbleSort(a,len);for(int i =0;i<len;i++){cout<<a[i]<<endl;} return 0;}
也就是说 ,当原数组已经有序时 ,只进行一次排序。 或者当进行一次或几次排序后数组已经有序了,那么后面就不用比较排序了。。

0 0
原创粉丝点击