【java】冒泡排序算法反思总结~

   思考了许久的,冒泡排序算法精髓
  看不会你打我~

  /*
  

原理:相邻两个位置的元素进行比较,元素大的交换到后面

一轮下来的结果,最后一个元素为最大值。
  



我们假设要比较的数组为arr

相邻两个元素比较大小,
(如果前面的元素比后面的大,交换两元素位置)

每一轮比较可以确定数组的最后一个元素为最大值
(1.数组有arr.length个元素,只需要将arr.length-1个元素归位)
(2.每一轮结束,下一轮相邻间需要比较的元素减少一个)

所以综上所述:
冒泡循环的循环条件可以确定
外循环为控制轮次
循环三要素:1 变量为:轮次 times
2 循环变量条件:进行arr.length-1 次
(这里轮次的初始化为0或1,条件也会随着改变
例如:times=0,times<arr.length-1
times=1,times<=arr.lenth-1
因为轮次要参与元素比较的逻辑,轮次递减
第一次不需要减,所以采用第一种初始化
)
3 变量改变条件:每次加1

内循环控制 数组间相邻元素的比较大小
每次都要从数组的第一个元素开始比较
比较数组arr[i] 和arr[i+1] 两元素的大小进行交换
i的最大值的条件不能数组越界 i<arr.length-1

内外循环之间的联系:
内循环比较的元素会随着外循环比较的轮次而递减
所以内循环的控制条件要和外循环建立联系
i<arr.length-1-times


代码实现:
package algorithms;

import java.util.Arrays;

public class BubbleSort {
public static void main(String[] args) {
int[] arr = new int[]{12,8,21,6,17,8};
for (int times=0;times<arr.length-1;times++){
for (int i=0;i < arr.length-1-times;i++){
if (arr[i]>arr[i+1]){
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
posted @ 2023-02-20 09:55  -YBP杨社长  阅读(125)  评论(0)    收藏  举报