冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
首先来看一下冒泡排序,先看一个没有排序的数是顺序,468553
第一轮排序
首先4和6进行对比,4比6小,6和8比较,6比8小,都不用移动,8和2进行比较8比2要大,所以要进行交换
顺序变为:462853
接着8和5进行比较,5比8小,所以要交换位置
顺序变为:462583
接着8和3进行比较,8比3大,所以要交换位置
顺序变为:462538,8来到了他正确的位置
第二轮排序
首先4和6进行对比,4比6小,不用移动,6和2进行比较,2比6小,所以要交换位置
顺序变为:426538
首先5和6进行对比,5比6小,所以要交换位置
顺序变为:425638
3和6进行对比,3比6小,进行交换,6来到了正确的位置
顺序变为:425368
第二轮排序
4和2进行对比,4比2大,所以要交换
顺序变为:245368
4和5进行对比,不用交换,5 和3进行对比,交换
顺序变为:243568 5来到了它正确的位置
第三轮排序
4来到了它正确的位置
顺序变为:234568,前面两个也是有序的,所以,变成了正确的顺序
代码如下:
import java.util.Arrays;//冒泡排序
public class BubbleSort {
public static void main(String[] args) {
int[] arr=new int[] {5,7,4,2,0,3,1,6};
bubbleSort(arr);//调用冒泡排序的方法
}
public static void bubbleSort(int[] arr) {
for(int i=0;i<arr.length;i++) { //定义一个i从头开始遍历
for(int j=0;j<arr.length-1;j++){ //定义另一个游标j从头开始遍历
if(arr[j]>arr[j+1]){ //如果j对应的数大于j+1对应的数,交换
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(arr)); //输出数组
}
}
运行结果: