高效理解排序之——冒泡排序-含JAVA实现(简洁明了,非无脑COPY)

前言

冒泡排序(Bubble Sort),像水底的气泡一样不断往上冒,谁的能量大谁就最出人头地。

基本思路

(从小到大)从第一个元素开始与相邻的下一个元素比较大小,如果开始的元素大于下一个相邻的元素就交换位置;接着从第二个元素开始向下一个元素开始比较,重复步骤。

(如果上面的文字你没看懂也没关系,看下面的图解)

图解

   


第一轮:8>7,交换位置,此时排序789436;继续比较8<9,不用交换;9>4,交换位置,此时排序784936;9>3,交换位置,此时排序:784396;9>6,交换位置,784369


   第二轮:7<8,不用交换;8>4,交换位置748369;8>3,交换位置:743869;8>6,交换位置:743689;8<9,不用交换(由于第一轮已经排出最大的了,所以步骤可以省略);            


第三、四、五、六轮:比较方式如上,(由于第五轮比较完成后只剩一个数字,故第六步可以省略)。

扫描二维码关注公众号,回复: 12421609 查看本文章

再次举一个列子:

看了这个图解再回过头看下思路

代码

JAVA版本

import java.util.Arrays;
public class BubbleSort {
    public static void main(String []args) {
		int[] array = new int[]{8,7,9,4,3,6};
		sort(array);
		System.out.print(Arrays.toString(array));
    }
	
	public  static void sort(int[] array){
		for(int i=0;i<array.length;i++){
			//看看上面的可省略步骤,试着优化一下
			for(int j = 0;j<array.length-1;j++){
				if(array[j]>array[j+1]){
					int temp = array[j];
					array[j] = array[j+1];
					array[j+1] = temp;	
				}
			}

		
		}
	
	}
}

注意,千万不要死记代码,很容易忘记,算法思想远比代码重要。

还记得上面提到过的可以省略的步骤吗?理解原理后试着对着面的代码进行优化吧!

效率

时间复杂度: O(n^{2})  空间负责度: O(1)  稳定性:稳定 

插入排序请参考:高效理解排序之——插入排序-含JAVA代码(简洁明了,非无脑COPY)

本章关键字总结:气泡    相邻   交换

猜你喜欢

转载自blog.csdn.net/weixin_48470176/article/details/110207017