冒泡排序
冒泡排序
通过对待排序序列从前到后(从下标较小的元素开始),依次比较相邻的元素的值,若发现逆序则交换,使值较大的元素逐渐从前移动向后部,就像水底的气泡一样逐渐上冒。
因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行交换过,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换,从而减少不必要的比较。
冒泡排序思路图解

代码实现
public class BubbleSortProMax {
public static void main(String[] args) {
int arr[] = {3, 9, -1, 10, -2};
bubbleSort(arr);
for (int i : arr) {
System.out.println(i);
}
}
public static void bubbleSort(int[] arr){
boolean flag=false;
for (int j = 0; j < arr.length; j++) {
//第一趟排序
for (int i = 0; i < arr.length - 1 - j; i++) {
// 前面的数据》后面的数据,则交换
if (arr[i] > arr[i + 1]) {
flag=true;
int temp = arr[i + 1];
arr[i + 1] = arr[i];
arr[i] = temp;
}
}
if(!flag){ //在一趟排序中,一次交换都没有发生
break;
}else{
flag=false; // 重置flag,进行下一次判断
}
}
}
}
时间复杂度为n的平方
本文来自博客园,作者:King-DA,转载请注明原文链接:https://www.cnblogs.com/qingmuchuanqi48/articles/17453185.html

浙公网安备 33010602011771号