package sort;
import java.util.Arrays;
/*冒泡排序*/
//1、判断arr不符合的情况,直接返回null,如arr==null或者arr的长度=0
//2、定义一个boolean变量swap,可以加快效率,当在遍历的时候没有元素发生交换,则直接返回结果
//3、两层遍历:
//(1)i代表走的趟数,2个2个比较,所以只要走n-1次就可以了
//(2)j=i+1,相当于i的后一位,i之前的已经冒泡出去了
// (3)如果数组中arr[j]比较小,则让他与arr[i]互换,相当于把元素值比较大的值往后移动,相当于泡泡一样,越大的泡泡先上去。
//时间复杂度 O(n)~O(n^2): 因为存在两层循环
//空间复杂度:O(1)
public class BubbleSort {
public static void main(String[] args) {
int[] arr={10,21,4,62,7,2};
int[] res = bubbleSort(arr);
System.out.println(Arrays.toString(res));
}
public static int[] bubbleSort(int[] arr){
if (arr==null||arr.length==0){
return arr;
}
int n=arr.length;
boolean swap;
for (int i = 0; i < n-1; i++) {
swap=false;
for (int j = i+1; j <n ; j++) {
if(arr[j]<arr[i]){
int temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
swap=true;
}
}
if(!swap)
return arr;
}
return arr;
}
}