冒泡排序
描述
冒泡排序的核心思想 你可以想想军训站队排队列 , 首先得把第一个人拉出来跟第二个人进行比较 ,如果第二个比他高 两人交换位置 然后他就站在第二个 ,然后继续让第二个跟第三个进行比较 以此类推 直到比较到最后一个。第一轮比较完毕后就会确定出最高的人并且站到最后 ,这个时候就确定了最大值 。然后继续拉出队列中第一个人进行比较 确定第二大的值 以此类推 循环比较n-1次 (n是需要进行比较的数据总数)。
来张图加深理解(来源参考资料)
代码奉上
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args){
int[] arr = {3,4,-1,10,-2};
bubbleSort(arr);
}
public static void bubbleSort(int[] arr){
int temp;
boolean flag = false;
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-(1+i); j++) {
if (arr[j] > arr[j+1]){
flag = true;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
if (flag){
flag = false;
}else {
break;
}
}
System.out.println(Arrays.toString(arr));
}
}
复杂度
时间复杂度: O(N^2)
空间复杂度: O(1)
如果数据量在比较大的情况下使用冒泡排序的话 时间相对会比较久
参考资料
参考资料目的地
https://www.toutiao.com/a6593273307280179715/?iid=6593273307280179715
在下秃头萌新一枚 不妥之处 还望多多指教