交换排序----冒泡排序----java实现

本文详细介绍了冒泡排序算法的工作原理及实现过程。通过逐步演示如何通过比较相邻元素并交换位置来将最大值移至数组末尾,从而实现数组的排序。文章还提供了具体的Java代码示例,展示了如何通过标志位来优化排序过程。

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

冒泡排序:

1趟:依次比较0112.......n-2n-1索引位置的元素,如果发现一个数比他后面的数大,则交换着两个数的位置,经过第一趟排序,最大的数排在了数组的最后面。

2趟:依次比较0112.......n-3n-2索引位置的元素,如果发现一个数比他后面的数大,则交换着两个数的位置,经过第2趟排序,0-n-2区间中最大的数排在了数组的倒数第二个位置。

.......

n-1趟排序:比较01,如果发现一个数比他后面的数大,则交换着两个数的位置。

实际上冒泡排序的每趟交换结束,不仅可以得到当前的最大值,还能部分有序前面其他的元素,如果某趟一次交换也没有发生,说明数组已经全部有序,可以提前结束。

public void bubbleSort(int[] array)
  {
	  //需要进行n-1趟交换
	for (int i = 0; i < array.length-1; i++)
	{
		boolean flag = false;
		//每趟交换
		for (int j = 0; j < array.length-1-i; j++)
		{
			if(array[j] > array[j+1])
			{
				swap(array,j,j+1);
				flag = true;//如果进行交换了,则flag=true;
			}
		}
		//如果flag==false说明这趟没有进行一次交换,此时数组寂静全部有序,可以退出程序
		if(flag == false)
		{
			break;
		}
	}  
  }
private void swap(int[] array, int i , int j)
{
	int temp = array[j];
	array[j] = array[i];
	array[i]=temp;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值