算法学习——冒泡排序

顾名思义,冒泡排序就是将要排序的对象像冒泡泡一样一个挨着一个比较,最终形成一定的顺序。

就像一群人中一共有五个人,要让他们按照身高进行排序,首先让第一个人和第二个人比较,个子高的人再和第三个人比较,这两个人中个子更高的再和第四个人比较,一轮下来就会选出最高的人,然后让剩下的四个人按照同样的方法进行比较,在四轮比较之后就会排出他们的顺序。

假设要为一个数组进行排序,实现起来就是这样:

int[] a = {23,12,32,42,15};

首先,23和12进行比较,大的在前,小的在后,需要互换位置,换完之后23在第二位,同第三位的32比较,这时不需要互换位置,同理,32和42也不需要互换位置,到了42和15的时候,又是大的在前,小的在后,这时就需要将42和15互换位置,一趟结束后比较了四次,就将最大的数42换到了数组的最后,第二趟开始时只需要比较前四个数就可以了,以此类推,四趟过后数组就排序完成了。

package pp.suanfa;
/**
 * 冒泡排序
 * 
 * @author Administrator
 *
 */

public class BubbleSort {
	
	public static void bSort(int[] a)
	{
		int temp;
		for(int i=0;i<a.length;i++)
		{
			for(int j=1;j<a.length-i;j++)//确定每趟排序要比较元素的个数
			{
				if(a[j-1]>a[j])//如果前面的大于后面的,就将元素的位置互换
				{
					temp = a[j-1];
					a[j-1] = a[j];
					a[j] = temp;	
				}
			}
		}
	}
	
	public static void main(String[] args){
		int[] a = {32,21,24,65,16};
		bSort(a);
		for(int i=0;i<a.length;i++)
		{
			System.out.print(a[i]+" ");
		}
		System.out.println();
	}

}

如果运气好则不需要进入第二轮循环,时间复杂度为O(n),反之时间复杂度为O(n²).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值