1、原理:从第一位元素起,依次比较相邻两个元素,不符合规则(如小的在前)则互换位置。这样一轮(比较完整个队列)下来,(最大/最小)元素将换到最后一位,这也是冒泡排序的名称的由来。第二轮重新开始,同样的过程,最终结果第二(大/小)的元素将被换到倒数第二的位置...直到n-1轮结束,第n-1大的元素换到该在位置了,整个排序结束。
2、java代码实现
for(int i=0; i<array.lenth-1; i++){
for(int j=0; j<array-1-i; j++){
if(array[i]>array[j]){
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
优化一下:
int temp=0;
for(int i=0; i<array.lenth-1; i++){
boolean flag = false;
for(int j=0; j<array-1-i; j++){
if(array[j]>array[j+1]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
flag = true;
}
}
if(flag){
break;
}
}
什么意思?当原始的数组元素顺序比较好,提前已经完成排序,后续迭代没有必要。也就是当内层循环已经没有两个相邻的元素需要换位时,后续的各伦的比较可以省略。