冒泡排序法

首先,存在一组无序的数列,元素个数为n,例如:{2,4,9,5,7,8,1},n=7,目标是将这些数按照小-->大的顺序排列;

思路:(1)、从左往右依次将相邻的两个数比较大小,若左边>右边,则两个数交换位置,共比较n-1次,第一次遍历比较后,数列中最大的数将会被置换到数列的最末尾;内层for循环实现;

            过程:开始时:2,4,9,5,7,8,1;

                        第1次:比较2与4的大小,2>4,所以结果不变:2,4,9,5,7,8,1;

                        第2次:比较4与9的大小,4<9,所以结果不变:2,4,9,5,7,8,1;

                        第3次:比较9与5的大小,9>5,所以交换位置:2,4,5,9,7,8,1;

                        ……

                       第6次:比较9与1的大小,9>1,所以交换位置 :2,4,5,7,8,1,9;

           (2)、(1)的结果{2,4,5,7,8,1,9}再次进行(1)过程,比较n-2次,依次类推,之后每次进行(1)过程,都比前一次少比较1次,直到达到目标;外层for循环实现;

代码:

package cn.xust.algorithm;

import java.util.Arrays;

/**
 * 测试冒泡排序(bubble sort)
 * @author yushanc
 *
 */
public class BubbleSort 
{
	public static void main(String[] args)
	{
		int[] arr ={2,4,9,5,7,8,1};
		
		//排序
		for(int i =1; i<arr.length; i++)
		{
			boolean flag =true;
			
			for(int j =0; j<arr.length-i; j++)
			{
				if(arr[j]>arr[j+1])
				{
					flag =false;
					int temp =arr[j];
					
					arr[j] =arr[j+1];
					arr[j+1] =temp;
				}
			}
			
			//如果没有发生交换,说明已经排好序了,直接跳出循环
			if(flag)
			{
				break;
			}
		}
		
		//打印		
		System.out.println(Arrays.toString(arr));		
		
	}
}

运行结果:[1, 2, 4, 5, 7, 8, 9]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值