算法核心思想:
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。(百度所得)
什么意思呢?我来举个例子。假如有一个数组,3, 4, 2, 9。我们首先比较3和 4,3比4小,不交换。再比较4和 2,交换4,2的位置。再比较4和9,不交换。这样下来,数组中的最后一个位置就是最大的。既然数组中的最后一个值是最大的,那就可以固定了。我们再比较前三个数,依然是这样的方法,将三个数中的最大值放在数组中的倒数第二位。依次下去,数组将变得有序。
代码:
import java.util.Scanner;
public class BubbleSort {
//冒泡排序核心代码
public static void bubble(int arr[])
{
//如果数组为空,或者数组中只有一个数字,那么就直接return。
if(arr == null || arr.length < 2)
{
return;
}
for(int i = arr.length - 1; i > 0; i--)
{
for(int j = 0; j < i; j++)
{
if(arr[j] > arr[j + 1])
{
int temp;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
public static void main(String args[])
{
//输入数组中含有几个数
System.out.println("请输入一个整数:");
Scanner input = new Scanner(System.in);
int n = input.nextInt();
//定义数组
int arr[] = new int[n];
//输入数组
for(int i = 0; i < n; i++)
{
arr[i] = input.nextInt();
}
input.close();
//调用函数
bubble(arr);
//输出数组
for(int i = 0; i < n; i++)
{
System.out.println(arr[i]);
}
}