详解冒泡排序算法

算法核心思想
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]);
		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值