前言
作为一名Java开发工程师,想必很多小伙伴在数据结构与算法的道路上难以突破,今天小编就和大家一起去突破它。开启算法之路。只要肯坚持,没有突破不了的困难。
冒泡排序
题目描述:
给定一个无序的数组,按照从小到大的顺序进行排序。
例如:
int[] arr = {3, 1, 4, 7, 87, 32, 2, 5};
返回一个有序的数组:sortArray:{1, 2, 3, 4, 5, 7, 32, 87}
实现思想:
由两个for循环实现,第一个for循环控制的是0~n-1,0~n-2,... 0~0,什么意思呢?就是说控制的是第几次冒泡;第二个for循环实现一次遍历中,不同位置上数据的交换(如上图所示)。
大家可以将上述中后续的几次冒泡排序实现过程, 手动画一下哦,相信你有不一样的收获。
代码实现(实现主要逻辑)
/**
* 冒泡排序主实现方法
*
* @param arr 要排序的数组
*/
private static void bubbleSort(int[] arr) {
// 1、边界处理
if (arr == null || arr.length < 2) {
return;
}
// 2、实现主逻辑
int n = arr.length;
// 0 ~ n-1
// 0 ~ n-2
// 0 ~ n-3
for (int i = n - 1; i >= 0; i--) {
// 0 ~ n-1 做的一些事情
// 0和1是否交换,1和2是否交换 。。。
for (int j = 1; j <= i; j++) {
if (arr[j - 1] < arr[j]) {
swapArray(arr, j - 1, j);
}
}
}
}