转载

Java|实现冒泡排序

欢迎点击「算法与编程之美」↑关注我们!

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

问题描述

冒泡排序是一种简单的常见的排序算法 ,算法重复的走访排序的数组,通过不断的两两比较,最终把最大数浮于上方,好比是可乐的气泡冒泡的过程,所以生动的称之为 “冒泡排序”。

接下来,将用java的方式进行编写。

解决方案

1流程图

Java|实现冒泡排序

2流程描述

比较相邻两个数,如果下标小的数大于了下标大的数,则交换两个数的位置。

按照上述方法,从第一个数开始比较,知道比较到最后一个数结尾,最后的数,则是该数组的最大值。

比出一个数后,继续比较,直到所有数都比较一次。直到没有数的顺序可以交换为止。

3生活实例

体育课上,老师让我们按照身高排位置,就是利用的冒泡算法。

4问题解决

4.1第一趟排序

我们拿到问题,大多数时候是不能一次性解决的,所以我先将第一趟排序实现,再做后面的研究。

public class BubbleSort {

public static void main(String[] args) {

// 定义一个待处理数组

int[] arr = {2, 0, 5, 9, 8, 4, 3, 1, 6, 7};

//定义中间变量,用于后面的元素交换

int invar = 0;

for (int i = 0; i <arr.length-1 ; i++) {

if (arr[i]>arr[i+1]){

// 交换顺序

invar = arr[i+1];

arr[i+1] = arr[i];

arr[i] = invar;

}

//打印每次的交换结果

System.out.println(Arrays.toString(arr));

}

}

}

4.2完整代码

public class BubbleSort {

public static void main(String[] args) {

// 定义一个待处理数组

int[] arr = {2, 0, 5, 9, 8, 4, 3, 1, 6, 7};

int invar = 0;

for (int j = 0; j <arr.length-1 ; j++) {

for (int i = 0; i <arr.length-1-j ; i++) {

if (arr[i]>arr[i+1]){

// 交换顺序

invar = arr[i+1];

arr[i+1] = arr[i];

arr[i] = invar;

}

System.out.println(Arrays.toString(arr));

}

}

}

}

结果如下

Java|实现冒泡排序

结语

冒泡排序是非常经典的算法 问题本身不难 需要学习的是解决问题的思路。当遇到一个复杂的问题 时,应该先从简单入手,把问题简单化。比如这次的冒泡排序,可以先完成一次排序,再来完成后面的多次排序,逐步优化代码。

END

主  编   |   王文星

责  编   |   王   宇

where2go 团队

   

微信号:算法与编程之美          

Java|实现冒泡排序

长按识别二维码关注我们!

温馨提示: 点击页面右下角 “写留言”发表评论,期待您的参与!期待您的转发!

原文  http://mp.weixin.qq.com/s?__biz=MzI5MTQ5NDY1MA==&mid=2247489674&idx=3&sn=9c236c385fa2baa66396e20d608e2a20
正文到此结束
Loading...