9.java中的循环:
java中的循环
for循环:
一般在明确知道循环次数的情况下使用
① ② ③
for(初始化表达式;布尔表达式;递增表达式){
④
//循环体
}
for(int i = 0 ; i<3;i++){
System.out.println(i);
}
10.Java数组的排序
[8,2,3,7,1] --->[1,2,3,7,8]
冒泡排序
选择排序
插入排序
........
Arrays.sort();
冒泡排序
[8,2,3,7,1]
每次排序将挑出本次排序最大的数放到后面
比较相邻的两个元素,大的往后,小的往前.
第一次排序:
第一次比较 8 <-> 2 [2,8,3,7,1]
第二次比较 8 <-> 3 [2,3,8,7,1]
第三次比较 8 <-> 7 [2,3,7,8,1]
第四次比较 8 <-> 1 [2,3,7,1,8]
第二次排序:
第一次比较 2 -> 3 [2,3,7,1,8]
第二次比较 3 -> 7 [2,3,7,1,8]
第三次比较 7 <->1 [2,3,1,7,8]
第三次排序:
第一次比较 2 -> 3 [2,3,1,7,8]
第二次比较 3 <->1 [2,1,3,7,8]
第四次排序
第一次比较 2 <->1 [1,2,3,7,8]
数组中总共有5个数:
需要几次排序,每次排序比较几次?
最多需要arr.length-1次排序
第一次排序比较4次
第二次排序比较3次
第三次排序比较2次
第四次排序比较1次
冒泡排序的代码:
外层for循环控制排序的次数
内层for循环控制每次排序比较的次数
for(int i=0;i<arr.length-1;i++){
for(int j =0 ;j<arr.length-i-1;j++){
//两两比较,交换位置
if(arr[j] > arr[j+1]){
int temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
}
}
}
选择排序
将数组中的每个元素与第一个元素比较,
如果这个元素小于第一个元素,交换位置
每次排序找出一个最小的往前面放.
[8,2,3,7,1]
for(int i =0 ;i <arr.length-1;i++){
for(int j =i+1;j<arr.length;j++){
if(arr[i]>arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp ;
}
}
}
11方法的递归调用(了解为主,掌握为辅)
f(n){
f(n-1);
}
y =f(n)=1+3+5+7+9+....+n == f(n-2)+n ==f(n-4)+n-2+n
f(n) =1~n
f(n-2) =1~n-2
f(n-4) =1~n-4
1 3 5 7 9.... n-4 n-2 n
计算 9+7+5+3+1
n = 9
f(n){
1 +3+5+7+n
f(n-2)+n;
}
f(n-2){
f(n-4)+n-2;
}
f(1) == 1
publicstatic int f(int n){
if(n ==1){
return 1 ;
}
return f(n-2)+n;
}
f(9) =f(7)+9
f(7) =f(5)+7
f(5) =f(3)+5
f(3) =f(1)+3
f(1) =1
12.栈内存
栈是计算机中的一种数据存储方式,java进程启动时在内存中开辟的存储空间.
栈内存遵循LIFO(后进先出).java中的所有局部变量在栈中分配空间
局部变量:
写到方法中的变量
方法的形参
当离开局部变量的作用域,变量被回收,从栈中删除.
java中的方法调用就是使用栈实现的.