一维数组的冒泡排序

孤人 提交于 2020-02-08 14:30:36

冒泡排序(Bubble Sort)是啥?

来源百度百科:
冒泡排序是一种简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。

白话理解

1.首先交换,可以将数组的最大值移动到最后面。(从小到大)
2.在依次交换,最大值移动到,倒数第二位。
3.最后交换,直到所有数值排列整齐。

import java.util.Arrays;

public class Main {
	public static void main(String[] args) {
		int[] arr = new int[] { 2, 6, 3, 7, 0, 9 };          //定义一个一维数组
		bubbleSort(arr);                                     //调用方法
	}

	public static void bubbleSort(int[] arr) {
		for (int i = 1; i < arr.length; i++) {               //每一轮循环
		    //它交换要比数组的最后一位小,-i就是当前的最后一位,-1才是最后一位的前一位。	
			for (int j = 0; j < arr.length - i - 1; j++) {   //控制每一轮次数
				if (arr[j] > arr[j + 1]) {                   //控制小到大输出,如果是<,那就是大到小输出。(划重点,要考!!!)
					int temp;                                //给个替换
					temp=arr[j+1];                           //这三行是冒泡的固定替换,不明白就背过!!
					arr[j+1]=arr[j];                         //这三行是冒泡的固定替换,不明白就背过!!
					arr[j]=temp;                             //这三行是冒泡的固定替换,不明白就背过!!
				}
			}
		}
		System.out.println(Arrays.toString(arr));            //输出数组
	}
}

自述

其实之前一直没有明白冒泡的含义,也不明白举一反三,可能是见的多了,今天看到了
https://zhuanlan.zhihu.com/p/64659372
这位大佬的文章,突然顿悟了,然后紧接着自己敲出这些代码,中间遇到小问题。
就是-i-1,不夸张,牛一句话给我安排的明明白白,感谢我大哥南墙!!!

https://blog.csdn.net/a1439775520/article/details/96633611

Java实现选择排序和冒泡排序,这是我大哥的文章~~~

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!