动画
简介:
-
是一种简单直接地解决问题的方法,
常常直接基于问题的描述,
所以,蛮力法也是最容易应用的方法。
但是,用蛮力法设计的算法时间特性往往也是最低的,
典型的指数时间算法一般都是通过蛮力搜索而得到的 。(即输入资料的数量依线性成长,所花的时间将会以指数成长) -
代码
-
// 定义一个数组 int[] array = {1,2,3,6,5}; // 第四步 套上外循环 因为内循环每次都可以找到一个最大的放在最后 那么外循环每次都需要减少一次循环次数 所以使用倒叙 j-- for (int j = array.length - 1; j > 0; j--) { // 第五步 flag 当做优化使用 如果是true 可以减少循环次数 boolean flag = true; // 第一步 j 可以看做是array.length -1 数组是从0开始的 for (int i = 0; i < j; i++) { // 第二步 判断如果第一个比第二个大 就把这两个值互换 if (array[i] > array[i + 1]) { // 第三步 互换 每一次都会找到一个最大的放在数组的最后面 int temp = array[i]; array[i] = array[i+1]; array[i+1] = temp; flag = false; } } if (flag) { break; } } // 打印出来 for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); }
-
运行结果:
-
1 2 3 5 6
Process finished with exit code 0
-
-
总结:内循环 :正序循环,数组的长度-1 循环内判断,第一个 > 第二个 互换