起泡法java_用java实现冒泡排序算法

本文详细介绍了冒泡排序的算法原理,包括原始冒泡排序的步骤和示例,以及针对冒泡排序的两种改进方法。通过Java代码展示了冒泡排序的实现,并分析了其在不同初始序列下的时间复杂度,指出冒泡排序虽然在最坏情况下时间复杂度为O(n^2),但在某些特定情况下可以达到O(n)。文章还讨论了冒泡排序的稳定性,并提供了带有交换标志优化的Java代码实现。
摘要由CSDN通过智能技术生成

冒泡排序的算法分析与改进

交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。

应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。

public class BubbleSort implements SortUtil.Sort{

public void sort(int[] data) {

int temp;

for(int i=0;i

for(int j=data.length-1;j>i;j--){

if(data[j]

SortUtil.swap(data,j,j-1);

}

}

}

}

冒泡排序

1、排序方法

将被排序的记录数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。

(1)初始

R[1..n]为无序区。

(2)第一趟扫描

从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。即依次比较(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);对于每对气泡(R[j+1],R[j]),若R[j+1].key

第一趟扫

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值