首先 为啥学算法, 其实我也没有深入理解 接触到的并不是很多 但是 通过 学习一点 打法无聊的时间 其实 写博客有一点就是可以记录自己走过的路 废话不多说了 进入主题 首先 我聊一下冒泡 就好像是从水底冒泡一样 其实就是相邻的两个数据比较 谁厉害 站前面 但是被比较下去的数据又要跟后面的数据比较 就好比跟第一名比较 输了 跟第二名比较 再输 和第三名比较 一样 。 失败了 就有人顶替你的位置
看代码 。。。。。
int[] arr = new int[]{-12, 3, 2, 34, 5, 8, 1};
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
System.out.println(Arrays.toString(arr));
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
解析 通俗的讲就是 第一次大的循环 会把最大的数据撒选出来 放到最后 上面个的方法可以看到 内部的循环是递减的 因为 每次大的循环都会把最大的数据放到最后 所以循环次数都减少了
以上都是作者的理解欢迎大家指导
|