冒泡排序:这个排序算法是我上大学以来是第一个学的算法,现在想想时间真的很快,感触蛮多。
算法思想:就是每经过一次大循环,找出当前未进行排序的最大或最小点放在第一位,然后依次循环。
主体是一个嵌套循环,第一个大循环来确定数组第i个位置放哪个数字。里面嵌套的小循环是进行判断和其他点的大小,不符合顺序交换,这个小循环一直要从未排序的头部分走到尾部分,这样一直交换就把最大或者最小的交换到了最后或者第一个位置
注意:如果是按从小到大需要从队尾开始,如果按照从大到小需要从队头开始。
package bubbling;
//时间复杂度为O[n的平方]
public class Bubbling {
public static void main(String[] args) {
int[] bub = new int[]{4,2,3,2,52,2,1,6,42,54};//先定义一个数组,用来操作用
int i,j,k;//循环用变量
Boolean flag=true;//用flag做标记,如果最后一次循环前就排序好了,那么第一个大循环就不会进入if语句,
for(i=0;i<9&&flag==true;i++){
flag=false;
for(j=bub.length-2;j>=i;j--){//-2是因为有两个-1,第一个减1是因为下标是0开始的,第二个减1是因为从都数第二个开始和倒是一个交换
if (bub[j]>bub[j+1]){
k=bub[j];
bub[j]=bub[j+1];
bub[j+1]=k;
flag=true;
}
}
}
for(int f:bub){
System.out.println(f);
}
}
}