/**
* 冒泡排序
*/
@Service
public class BubbleSort implements Sort {
@Override
public String getName() {
return "冒泡排序";
}
@Override
public int[] sortArray(int[] nums) {
int t;
for (int i = 0; i < nums.length - 1; i++) {
for (int j = 0; j < nums.length - 1 - i; j++) {
if (nums[j] > nums[j + 1]) {
t = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = t;
}
}
}
return nums;
}
}
逻辑解释:
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、循环对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。循环结束后,最后一个数为当前最大的数,且排在最后一个位置n。
3、重复循环2的操作,每次循环的次数-1。即找出比上一次循环次之小的最大的数,排在上一次的数字之前。
最终效果就好像汽水中的气泡一样,底下是小的,漂浮到顶部的过程慢慢变大,故称为:冒泡排序。
快速记忆:
2层循环,索引变量i和j,边界length-1,length-1-i,交换j和j+1。