-
冒泡排序的思想
通过对待排序的序列从前往后,依次比较相邻元素的值。如果发现逆序,就交换两个元素的值,使值较大的元素从前向后移动。
-
冒泡排序的规则
1.一共会进行(数组大小 减 1)趟排序
2.每一趟排序的次数会减少。因为每一趟都会确定一个元素的最终位置,之后就只用比较其他元素即可。
3.(优化)如果我们发现在某一趟排序中没有发生一次交换,冒泡排序就可以提前结束。 -
代码如下
public class BubbleSort {
public static void main(String[] args) {
int[] bubble = {3,2,5,4,1};
bubbleSort(bubble);
System.out.println(Arrays.toString(bubble));
}
public static void bubbleSort(int[] array){
boolean flag = false;//用来判断是否有交换
int temp = 0;
for (int i = 0; i < array.length - 1; i++) {
//每趟排序完成能确定一个元素的位置,下一趟排序次数就会减少一次
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j]>array[j+1]){
flag = true;
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
//如果没有交换就提前结束
if (!flag){
break;
}
//如果有交换,继续排序但是flag置为false
else {
flag = false;
}
}
}
}
- 时间复杂度
冒泡排序的时间复杂度 O(n^2)