上期作业:
1: 用二分法求一已排序数组中的指定数值
public static int binary(int[] a, int key) { // 传入一个数组和一个要查找的数
int low = 0; //定义一个头变量
int high = a.length - 1; // 定义一个尾变量
int mid = (low + high) / 2;// 定义一个中间变量
int i;// 用于接收目标值得下标
if (key < a[mid]) { // 如果要找的值在前半部分
while (key != a[low]) { //遍历前半部分数组
low++;
if (low == mid) {
return -1;
}
}
return low;
} else {
while (key != a[mid]) { // 遍历后半数组;
mid++;
if (mid == a.length) {
return -1;
}
}
return mid;
}
}
2:求一个数组的连续子数组最大和,并输出区间下标
public static void maxSum(int[] a) {
//求一个数组的连续子数组最大和,并输出区间下标
int maxSum = 0;// 声明一个变量储存最大值
int nowSum ;//声明一个变量储存当前的和
int hand=0;
int foot=0;//定义最大和子数组的头尾下标
for (int i = 0; i < a.length; i++) { //此循环子数组
for (int j = i; j < a.length; j++) {
nowSum = 0; // 每一次就子数组的和之前必须将nowSum中储存的值清零;
for (int k = i; k <=j; k++) {
nowSum += a[k];//计算每个子数组的和;
if (nowSum>maxSum) {
maxSum=nowSum; //如果当前计算的和大于最大值,则将当前计算的和赋值给最大值
hand=i;
foot=j;
}
}
}
}
System.out.println("最大数组和:"+maxSum+"**********子数组区间"+hand +"~"+ foot);
}
3:封装一个方法交换两个变量的值
此方法不能实现。因为虽然把值传进去了,但是只是方法内部的变量的值改变了,方法内部变量的做运动范围只是方法内部,这个问题考到变量作用范围的问题;
4: 倒置数组:
public static int[] convetArray( int[] a) {
int [] b=new int[a.length];
for (int i=0,j=a.length-1;i<a.length;i++,j--) {
b[i]=a[j];
}
return b;
}
1: 中断流程控制语句
(1) break:用于退出循环语句
赐个例子经常用于swith语句中,用于结束语句;
while (years<=100&& balance <goal) {
balance +=payment;
double interst =balance * interstRate/100;
if(balance<goal) break ;// 如果满足陈、语句中的条件,则执行break语句,直接退出循环
year ++;
}
(2) continue 语句: 中断正常的控制流程,直接跳到循环首部;
for ( count =1 ; count<=100;count++) {
n= in.nextInt();
if( n<0) continue ; // 满足n<0 条件,执行continue语句,跳转到count++ 语句
}
2 数组: 数组是一种数据结构, 用于储存一类型的数值的集合,通过按下表来访问每一个数值;
(1)数组声明:
int []a =new int[5 //这是声明了一个长度为5 名字为a的int型数组;
( 2 ) 数组初始化有三个 动态 静态 默认:
默认初始化都为0;boolean 数组的元素初始化为false; 对象数组则初始化为null;
//数组的赋值 1 逐个赋值 动态初始化,通过下标
arr0[0]=100;
arr0[1]=99;
arr0[2]=88;
//创建引用类型一维数组 静态初始化
peson[] arr2= {
new peson(1001,"王一“);
new peson(1002,"王二"),
new peson(1003,"王三 };
(3)数组的内存分析:
int [] array1=new int[5];
int [] array2= array1; //数组引用之间的赋值
int [] array3 ={1,2,3, 4,5,6};
其内存分析如图:
(4)数组的输出方法:Arrays.toString (int array); foreach(0)循环,或者直接用下标输出;
// 用foreach 语句输出: 只能输出,不能修改里面的值;
int [] array=new int [5];//定义一个容量为5 的数组;
for(int i : array) {
System.out.println (i);
}
System.out.println(array[1]); // 输出下标为1的数组数据。