经典排序算法-冒泡排序Bubble sort
原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,
这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较,直到倒数第二位时结束,其余类似看例子
例子为从小到大排序,
原始待排序数组|6|2|4|1|5|9|
第一趟排序(外排序)
第一次两两比较6>2交互(内循环)
当前状态|6|2|4|1|5|9|
交换后状态|2|6|4|1|5|9|
第二次两两比较6>4交换
当前状态|2|6|4|1|5|9|
交换后状态|2|4|6|1|5|9|
以此类推第一趟排序结果|2|4|1|5|6|9|
第二趟排序(外循环)
第一次两两排序2<4不交换
第二次两两比较4>1交换
当前状态|2|4|1|5|6|9|
交换后状态||2|1|4|5|6|9|
一次类推最终结果1 2 4 5 6 9
static void bubbleSort(int[] a){
int flag1=0,flag2=0;
while(true){
for(int i=0;i<a.length-1;i++){
if(a[i]>a[i+1]){
flag1 = flag1+1;
int temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
//当数据交换次数为0时,结束排序
if(flag1!=flag2){
flag2 = flag1;
}else{
break;
}
}