欢迎点击「算法与编程之美」↑关注我们!
本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。
问题描述
冒泡排序是一种简单的常见的排序算法 ,算法重复的走访排序的数组,通过不断的两两比较,最终把最大数浮于上方,好比是可乐的气泡冒泡的过程,所以生动的称之为 “冒泡排序”。
接下来,将用java的方式进行编写。
解决方案
比较相邻两个数,如果下标小的数大于了下标大的数,则交换两个数的位置。
按照上述方法,从第一个数开始比较,知道比较到最后一个数结尾,最后的数,则是该数组的最大值。
比出一个数后,继续比较,直到所有数都比较一次。直到没有数的顺序可以交换为止。
体育课上,老师让我们按照身高排位置,就是利用的冒泡算法。
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));
}
}
}
}
结果如下 :
结语
冒泡排序是非常经典的算法 , 问题本身不难 , 需要学习的是解决问题的思路。当遇到一个复杂的问题 时,应该先从简单入手,把问题简单化。比如这次的冒泡排序,可以先完成一次排序,再来完成后面的多次排序,逐步优化代码。
END
主 编 | 王文星
责 编 | 王 宇
where2go 团队
微信号:算法与编程之美
长按识别二维码关注我们!
温馨提示: 点击页面右下角 “写留言”发表评论,期待您的参与!期待您的转发!