本文主要是介绍双向起泡算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include "stdio.h"
//交换数字
void swap(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;
}//双向起泡排序
void bubbleSort(int a[],int n){int low=0,high=n-1;int i,j;int flag=1;//一趟排序结束是否有交换 while(low<high&&flag) {//循环跳出条件 ,当flag为0说明已没有逆序 flag=0; //每趟初始flag为0; for(i=low;i<high;i++){//从前往后起泡 if(a[i]>a[i+1]){swap(&a[i],&a[i+1]);flag=1; }}high--;//从前往后结束后更新上界 for(j=high;j>low;j--){//从后往前起泡 if(a[j]<a[j-1]){swap(&a[j],&a[j-1]);flag=1;}}low++;//从后往前结束后更新下届 }
}int main(){int a[10]={4,5,2,3,6,7,1,0,9,8};bubbleSort(a,10);for(int i=0;i<10;i++){printf("%d ",a[i]);}
}
这篇关于双向起泡算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!