JAVA排序算法之一冒泡排序

这个系列是为了探讨算法的基础,为了自己打基础也为大家分享一下冒泡排序的实现原理。

第一种方法是拿数组的第一个元素和其他元素比较一遍找到最大的一个元素放到数组的末尾,接着找到第二大的元素放到数组倒数第二的位置,以此类推。

废话不说开始让代码演示

int [] temp = new int [] {2, 9, 78, 5, 1};//初始一个数组

for(int i = 0; i < temp.length -1; i ++){
for(int j = 0; j <temp.length - 1 - i; j++){
if(temp[j] > temp[j + 1]){
int t = temp[j];
temp[j] = temp[j+1];
temp[j+1] = t;
}
}
System.out.println("第" + i + "次排序: " + Arrays.toString(temp));
}

通过控制台打印可以知道每一次元素的移动,第一次把最大的元素放到数组末尾78,第二次元素9,第三次5,第四次2

第0次排序: [2, 9, 5, 1, 78]
第1次排序: [2, 5, 1, 9, 78]
第2次排序: [2, 1, 5, 9, 78]
第3次排序: [1, 2, 5, 9, 78]

第二种方法则是相反先找到数组中最小的元素放到数组的第一的位置,第二小的元素放到数组第二的位置,以此类推。

int [] temp = new int [] {2, 9, 78, 5, 1};

for(int i=0; i<temp.length-1; i++){
for(int j=i+1; j<temp.length; j++){
if(temp[i] > temp[j]){
int t = temp[i];
temp[i] = temp[j];
temp[j] = t;
}
}
System.out.println("第" + i + "次排序: " + Arrays.toString(temp));
}

控制台打印顺序和第一种方法正好想反,把第一小的元素放到数组第一的位置1,第二小的2,以此类推。

第0次排序: [1, 9, 78, 5, 2]
第1次排序: [1, 2, 78, 9, 5]
第2次排序: [1, 2, 5, 78, 9]
第3次排序: [1, 2, 5, 9, 78]
第4次排序: [1, 2, 5, 9, 78]

之前的循环没有考虑到内循环j+1所以外循环i最大值到temp.length-1就好了,避免多一次循环。

算法还是要掌握原理,原理掌握了实现方法就容易实现了,好了第一个排序算法到此为止。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值