在冒泡排序的执行过程中,如果数字较小,就会逐步被交换到前面去,相反,对于大的数字,则会下沉,交换到数组的末尾。

冒泡排序的一般算法如下:
public static void bubbleSort(int[] arr){
for(int i = arr.length-1; i>0; i--){
for(int j = arr.length-1; j>0; j--){
if(arr[j] > arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
冒泡排序的迭代过程如下:

该算法的最差时间复杂度为O(n2),最优时间复杂度为O(n),平均时间复杂度为 O(n2)。
在每次迭代的交换过程中,由于每次交换的两个元素存在数据冲突,对于每个元素,它既可能与前面的元素交换,也可能与后面的元素交换,因此很难直接改造成并行算法。