/**
* 传统的算法优化点点
*/
public void oldMaoPaoIsBetter(){
int runNumb=0;
/**
* 先计算需要比对的次数,每次循环可以确定当轮的最大数或者最小数,10个数9次就出了结果,11个数10次就出了结果,类推
*/
for(int i=0;i<numbs.length;i++){
boolean isChange=false;
/**
* 然后计算每一轮,里面有多少个数互相比较,每轮都少了一个数,10个数,9次就能比对为,公式就很简单了
*/
for(int j=0;j<numbs.length-1-i;j++){
runNumb++;
/**
* 计算这一轮比对的值,为当前位置的值,和下一个位置的值
*/
int n1=numbs[j];
int n2=numbs[j+1];
/**
* 我们比哪个大
*/
if(n1>n2){
/**
* 把他们的位置值换一下,换位算法
*/
int n3=n1;
n1=n2;
n2=n3;
/**
* 值互换好了,把值放进去
*/
numbs[j]=n1;
numbs[j+1]=n2;
/**
* 记录这轮发生了改变
*/
isChange=true;
}
}
if(!isChange){
/**
* 如果没发生改变,就说明,数据是最优的了,可以提前结束循环了
*/
break;
}
}
/**
* 现在值就出来了
*/
for(int n:numbs){
System.out.println(n);
}
System.out.println("总共计算了多少次:"+runNumb);
System.out.println("-----------分割线------------");
}