版权声明:中华人民共和国持有版权 https://blog.csdn.net/Fly_Fly_Zhang/article/details/83096718
作业:
import java.util.*;
public class Main {
//1、实现二分查找算法:有序的数组
// pubclic static int binary(int[] array,int key) {} 找到返回下标,没有找到-1;
public static int binary(int[] array,int key) {
Arrays.sort(array);
int min=0;
int max=array.length-1;
int mid=-1;
int sum = -1;
while (min<=max)
{
mid=(max+min)/2;
if (array[mid] == key) {
sum=mid;
break ;
}
if (array[mid] < key) {
min=mid+1;
}
//else 此处 if else均可用。
if(array[mid]>key)
{
max=mid-1;
}
}
return sum;
}
//2、求连续子数组的最大和???{10,2,-1,9,-10,-99}
// 最小值:不能超过0x80000000
public static int maxHe(int [] array1)
{
int length=array1.length;
int sum=0;
int maxsum=0;
for(int i=0;i<length;i++)
{
for(int x=0;x<=i;x++)
{
sum+=array1[x];
if(sum>maxsum)
{
maxsum=sum;
}
if(x==i) //第二次外圈循环清空sum,这里不能用while,否则会陷入死循环。
{
sum=0;
}
}
}
return maxsum;
}
//* 3、交换两个数?
public static void exchange(int a,int b)
{
int [] ab=new int[2];
ab[0]=a;
ab[1]=b;
a=ab[1];
b=ab[0];
System.out.println("a="+a+";"+"b="+b+";");
}
// 4、逆置数组?{1,2,3,4}===》{4,3,2,1}
public static int[] inversion(int [] array2)
{
int length=array2.length;
int a=0;
int b=0;
int[] arrayInversion=new int[length];
for(int i=0;i<length/2;i++)
{
a=array2[i];
b=array2[length-1-i];
array2[i]=b;
array2[length-1-i]=a;
}
return array2;
}
public static void main(String[] args) {
int [] array= {5,7,3,9,2,6};
int index=binary(array,7);
System.out.println("查找到的下标为"+index);
int [] array1=new int[]{10,2,-1,9,-10,-99};
//maxHe(array1);
System.out.println("MaxHe="+maxHe(array1));
int a=2;
int b=5;
exchange(a,b);
int []array2={1,2,3,4,5,};
System.out.println("逆置数组为:"+(Arrays.toString(inversion(array2))));
}
}
课堂总结
1、do while 语句(至少会执行一次)
public static void main(String [] args)
{
int i =1;
int sum =0;
do{
sum+=i;
i++;
}while(i<=666);
}
2、break;continue;return;
- break: 跳出循环;
- continue:结束本次循环;
- return:用于终止方法的执行并将控制返回给调用方法;
- 如果一个函数里面有多个循环语句 可以在循环体前面加上序号,并在break;continue,后面跟上就是指定到这个循环。
3、 for each
int [] array={2,5,9,6,7,5,0,6,8};
Arrays.sort(array);//从小到大排序排序
System.out.println(Arrays.toString(array));
//将数组转换成字符串并输出。
4、数组
int array [] [] = new int [3][5];
int a=array.length //3
int b=array[].length//5 //引用类型数组,只是地址引用,堆里面并没有变化。