冒泡排序及其改进算法
来源:互联网 发布:软件开发职业方向 编辑:程序博客网 时间: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");}