简单排序之冒泡排序

简单排序之冒泡排序

冒泡排序算法运行起来非常慢,单在概念上它是排序算法中最简单的,因此冒泡排序算法在

刚开始研究排序技术时是一个非常好的算法。

 

使用冒泡排序算法对棒球队队员排序

如果人近视得像计算机程序一样,以至于只能看到站在他面前的两个相邻的棒球队员。在这种困难的情况下,如何为队员们排序呢?假设有N个队员,并且根据所站的位置从左到右分别给每一个队员编号,从0N-1

冒泡排序例程执行如下:从队列的最左边开始,比较0号位置和1号位置的队员。如果左边的队员(0)高,就让两个队员交换。如果右边的队员高,就什么都不做。然后右移一个位置,比较1号位置和2号位置的队员。和刚才一样,如果左边的队员高,则两个队员交换位置,具体排序过程如图:

 

以下是要遵循的规则:

1.比较两个队员。

2.如果左边的队员高,则两队员交换位置。

3.向右移动一个位置,比较下面两个队员。

沿着这个队列照刚才那样比较下去,一直比较到队列的最右端。虽然还没有完全把所有队员都排好序,但是最高的队员确实已经被排到最右边了。这是可以确定的,因为在每次比较两个队员的时候,只要遇到最高的球员就会交换他()的位置,直到他()到达队列的最右边。这个算法被称为冒泡排序的原因:因为在算法执行的时候,最大的数据项总是“冒泡到”数组的顶端。下图是第一趟排序之后队员的排列情况。


4.那么当碰到第一个排定的队员后,就返回到队列的最左端重新开始下一趟排序。不断的执行这个过程,直到所有的队员都排定好。

以下是算法的具体代码实现:

public void bubbleSort(int[] arry){
	int temp = 0;
	for(int i = 0; i < arry.length; ++i){
		//因为每排序一次,数组顶端就确定一个位置,即每冒泡一次
		//下一次就只需对数组中的(arry.length - i - 1)个数排序
		for(int j = 0; j < arry.length - i - 1; ++j){
			//交换位置,将大的数向后排序
                        if(arry[j] > arry[j+1]){
				temp = arry[j];
				arry[j] = arry[j+1];
				arry[j+1] = temp;
			}
		}
	}
	print(arry);//打印输出
}
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值