冒泡排序及其改进算法

来源:互联网 发布:软件开发职业方向 编辑:程序博客网 时间:2024/05/17 07:16
//1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。//2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。//3.N=N-1,如果N不为0就重复前面二步,否则排序完成。/*# include<stdio.h>void Bubble_Sort(int A[],int n){        int i,j,temp;        for(i=0;i<n;i++)        for(j=0;j<n-i-1;j++)       {           if(A[j]>A[j+1])           {               temp=A[j];               A[j]=A[j+1];               A[j+1]=temp;            }       }}void main(){            int A[]={1,5,4,32,5,7};            Bubble_Sort(A,6);            for(int i=0;i<6;i++)            printf("%d ",A[i]);            printf("\n");}//不管有没有数据交换,均要进行比较*///冒泡排序的改进方式,根据判断flag,来确定是否有数据元素的交换,如果哪一趟没有数据交换,则退出循环# include<stdio.h>void swap(int *p1,int *p2){          int temp;          temp=*p1;          *p1=*p2;          *p2=temp;}void Bubble_Sort1(int A[],int n){      int i,k;      k=n;      bool flag=true;      while(flag)     {         flag=false;         for(i=1;i<k;i++)        {           if(A[i-1]>A[i])           {                swap(&A[i-1],&A[i]);                flag=true;           }        }        k--;     }}void main(){        int A[]={0,8,7,5,9,4,1,3};        Bubble_Sort1(A,8);        for(int i=0;i<8;i++)        printf("%d ",A[i]);        printf("\n");}


原创粉丝点击