递归思想:
简单来说,就是‘自己’调用‘自己’。但递归的思想,是把一个复杂的问题,化解为多个相似的小问题进行处理。合理运用递归思想,可以很好的帮助程序员同过少量简单的代码把一个复杂的问题解决。运用递归思想时候要注意以下几点:
- 定义递归边界:即当一个方法执行到某一程度时候,便终止方法,返回数据类型。
- 清楚递归过程:递归过程分为了从开始递归到递归边界,以及从递归边界返回到初始的过程。合理分析这一过程才不会让递归的结果超出程序员的预设。
- **当处理一个复杂且大的数据时候 😗*递归往往容易造成时间上的浪费(效率不高),因此如果不是万不得已尽可能采取其他方式实现递归后的结果。
public static void main(String[] args) {
print(1);
}
/**
* 利用递归思想打印图形
* @param number:打印的行数
* @return
*/
public static int print(int number) {
if (number == 5) {
return number;
}
for (int i = 0; i < number; i++) {
System.out.print("*" + "\t");
}
System.out.println();
return print(number + 1);
}
结果:
冒泡排序:
一个很著名的算法之一,冒泡排序的思想是:对一个无序的数组进行有序的排列,数组的元素中两两相邻的进行比较,根据情况进行交换位置。每一次的排序都实现最大/最小的元素的确定,并且每一次排序次数逐渐减少。
代码逻辑的实现思路:两层循环,外层循环控制元素便利的次数,内层循环控制元素的比较实现。
public static void main(String[] args) {
int[] arr = new int[]{1,5,6,3,4,8};
/**
* 冒泡排序算法:
*
*/
for (int i = 0; i < arr.length - 1; i++) {
//flag用于对冒泡排序的优化
boolean flag = false;
for (int j = 0; j < arr.length - 1 - i) {
//元素相邻两两比较
if (arr[j] > arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
flag = true;
}
}
if (flag == flase) {
System.out.println("排序完毕");
break;
}
}
}