冒泡排序算法是把大的元素向上移动(气泡的上浮),也考研把小的元素元素向下移动(气泡下层),请给出上浮和下层过程交替的冒泡排序算法。
思想:两种冒泡方式结合。
代码:
void swap(ElemType &a,ElemType &b){ElemType c=a;a=b;b=c;
}
void Bubblesort (int *data,int length){bool flag=true;int low=0,high=length-1;while(low<high&&flag==true){//数据全部排位,或者已经有序,则结束 flag=false;//先假设不会发生交换//升序冒泡for(int i=low;i<high;i++){if(data[i]>data[i+1]){swap(data[i],data[i+1]);flag=true;}} high--;//待排数据高位减一 //降序冒泡for(int i=high;i>low;i--){if(data[i]<data[i-1]){swap(data[i],data[i-1]);flag=true;}} low++;//待排数据地位减一 }
}