Java实现冒泡排序类

本文介绍了冒泡排序的原理和实现过程。通过一趟排序找到最大元素并确定其位置,逐步减少需要比较的元素数量,直到所有元素排序完成。文章提供了一个将冒泡排序编写的Java类,方便重复使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

冒泡排序

输入:一维数组存放n个无序数
输出:从小到大排序输出
算法:从下标j=0开始向右遍历数组,比较a[j]与a[j+1],若a[j]>a[j+1],则交换,此为一趟排序。
重复上述操作,比较n-1趟,排序完成。
分析:一趟排序可以得到最大的元素a[n-1],其实就是打擂台思想。
对于每一对a[j]与a[j+1]的比较,交换完大的元素就是a[j+1];
然后拿此时最大的元素与下一个元素比较并交换,所以a[j+1]中存放的永远是目前比较过的数中最大的数;
第一趟排序完,最大的元素就会放到a[n-1],确定了最大元素的位置,之后这个元素便不需要参加排序了,下一趟排序的个数便会少 一个。
第二趟排序完,第二大的元素就会放到a[n-2],位置确定,下一趟排序个数减一。
。。。。。。
第n-1趟排序,确定了n-1个数的位置,还剩一个就是呆在该待的位置上了,排序完成。

package test;
public class test1 {
	public static void main(String[] args){
		int []a={5,4,7,8,9,10,2,1,3,6};
		int len=a.length;
		for(int i=0;i<len-1;i++)//第i+1趟排序
		{
			for(int j=0;j<len-1-i;j++)//第j+1对比较
			{
				if(a[j]>a[j+1])
				{
					int t=a[j];
					a[j]=a[j+1];
					a[j+1]=t;
				}
			}
		}
		for(int i=0;i<len;i++)
		System.out.print(a[i]+" ");
	}	
}

  • 编写成类便于以后调用,放于包test中。
package test;
public class BubbleSort {
/**
 *  The {@code BubbleSort} class for solving the sorting of a set of integers or characters.
 * @author GU
 */
		public static void BubbleSort( int []a){
			int len=a.length;
			for(int i=0;i<len-1;i++)//第i+1趟排序
			{
				for(int j=0;j<len-1-i;j++)//第j+1对比较
				{
					if(a[j]>a[j+1])
					{
						int t=a[j];
						a[j]=a[j+1];
						a[j+1]=t;
					}
				}
			}
			for(int i=0;i<len;i++)
				System.out.print(a[i]+" ");
			System.out.println();
		}
		public  static void BubbleSort(char []a){
			int len=a.length;
			for(int i=0;i<len-1;i++)//第i+1趟排序
			{
				for(int j=0;j<len-1-i;j++)//第j+1对比较
				{
					if(a[j]>a[j+1])
					{
						char t=a[j];
						a[j]=a[j+1];
						a[j+1]=t;
					}
				}
			}
			for(int i=0;i<len;i++)
				System.out.print(a[i]+" ");
			System.out.println();
		}
		/**
	     * Unit tests some of the methods in {@code BubbleSort}.
	     *
	     * @param args the command-line arguments
	     */
		public static void main(String[] args){
			int []a={5,4,7,8,9,10,2,1,3,6};
			char []b={'a','b','d','c'};
			BubbleSort(a);
			BubbleSort(b);
		}
}

欢迎批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值