冒泡排序法

数据结构与算法 同时被 2 个专栏收录
1 篇文章 0 订阅
1 篇文章 0 订阅

首先,存在一组无序的数列,元素个数为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]

展开阅读全文
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页

打赏

c_雨山树

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值