1,冒泡排序的简介
冒泡排序算法是一个经典的排序算法,其主要特点是重复访问需要排序的数据,依次比较两个相邻的数据元素,按照自己的顺序(升序或降序)来交换两个相邻元素的位置,通过走访第一遍可得到最大值或最小值。
冒泡排序的时间复杂度为T(n)=O(n*n),空间复杂度为O(1)。
2,java代码实现
这里运行以升序为例,降序的也写在代码里面,同时也打印出每一遍的元素之间的变化。
package sort;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* project_name: JavaDemo
* filename: Buble
* IDE: IntelliJ IDEA
* author: ganxiang
* CreateDate:2020-07-17 16:26
*/
public class Buble {
private List<Integer> sort(int[] arr){
int length=arr.length-1;
int k=0;
for (int i = 0; i <length; i++) {
k+=1;
System.out.println("k=="+k+"-->第"+k+"排序为:");
for (int j = 1; j <=length-i ; j++) {
//1,从打到小排序
// if (arr[j]>arr[j-1]){
// int tmp=arr[j-1];
// arr[j-1] =arr[j];
// arr[j]=tmp;
// }
//2,从小到大
if(arr[j]<arr[j-1]){
int tmp =arr[j-1];
arr[j-1]=arr[j];
arr[j]=tmp;
}
System.out.println("arr:"+ Arrays.toString(arr));
}
}
List<Integer> list =new ArrayList<Integer>();
for (int i = 0; i <=length; i++) {
list.add(arr[i]);
}
return list;
}
public static void main(String[] args) {
int [] arr={1,5,3,6,4};
System.out.println("输入-->需要排序的数组为:"+Arrays.toString(arr));
System.out.println("输出-->排序完成的数组为:"+new Buble().sort(arr));
}
}