int BiBubbleSort(int Arr[],int n,int maxnum){int left=0,right=n-1;int i;bool notDone= true;int temp;if(n<2)return -1;while(left<=right&¬Done){ notDone= false; //设置未发生交换标志 for(i=left;i<right;i++){if(Arr[i]>Arr[i+1]){//swap(Arr[i],Arr[i+1]);temp=Arr[i];Arr[i]=Arr[i+1];Arr[i+1]=temp;notDone= true;//}}right--;//右边界增加一个最大值for(i=right-1;i>=left;i--){if(Arr[i]>Arr[i+1]){//swap(Arr[i],Arr[i+1]);temp=Arr[i];Arr[i]=Arr[i+1];Arr[i+1]=temp;notDone= true;}}left++;//左边界增加一个最小值if(maxnum>0){maxnum--;if(maxnum==0)return 0;}}return 1;//ok
}
运行一次获取最大最小值
全部排序运行