java基础-04

版权声明:中华人民共和国持有版权 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;

  1. break: 跳出循环;
  2. continue:结束本次循环;
  3. return:用于终止方法的执行并将控制返回给调用方法;
  4. 如果一个函数里面有多个循环语句 可以在循环体前面加上序号,并在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  //引用类型数组,只是地址引用,堆里面并没有变化。

猜你喜欢

转载自blog.csdn.net/Fly_Fly_Zhang/article/details/83096718