上海传智播客JAVASE_day05学习笔记

《第五天总结》 张伦琦
《数组综合练习》
数组练习一-----单重循环    
    A.数组遍历    
    class HomeWork//数组遍历
    {
    public static void main(String[] args){
        char [] chars=new char[]{'A','B','C','D','E','F','G','H','I','J'};
        ergodic(chars);
    }
    public static void ergodic(char [] chars){
        for (int i=0;i<chars.length ;i++ ){
            System.out.print(chars[i]+" ");
        }

    }

    B.求数组中的最小值
    class HomeWork
    {
    public static void main(String[] args){
        int [] arr=new int[]{16,25,49,36,59,84,97,67,48,99};
        System.out.println("The min is "+findMin(arr));
    }
    public static int findMin(int []arr){
        int min=arr[0];
        for (int i=0;i<arr.length;i++ ){
            if (arr[i]<min){
                min=arr[i];
            }
        }
        return min;
    
    }
    
    }

    C.求数组元素的和
    class HomeWork
    {
    public static void main(String[] args){
        int[]arr=new int[]{1,2,3,4,5,6,7,8,9,10};
        System.out.println(sum(arr));
    }
    public static int sum(int []arr){
        int summ=1;
        for (int i=0;i<arr.length ;i++ ){
            summ+=arr[i];
        }
        return summ;
    }
    
    }

    D.数组转成字符串
    class ArraryToString
    {
    public static void main(String[] args){
        char [] chars=new char[]{'I',' ','L','o','v','e',' ','Y','o','u'};
        String str=turnString(chars);
        System.out.println(str);
    }
    public static String turnString(char []chars){//写方法前一定要明确方法的输入输出的类型或参数!!
        String str="";
        for (int i=0;i<chars.length ;i++ ){
            str=str+chars[i];
        }    
        return str;
    }
    
    }

    E.根据下标找数组中的元素
    class ArraryIndexFindElement
    //数组中根据下标寻找元素。index:下标;element:元素
    {
    public static void main(String[] args){
        char [] chars=new char[]{'I',' ','L','o','v','e',' ','Y','o','u'};
        char answer=finding(chars,5);
        System.out.println(answer);
    
    }
    public static char finding(char[] chars,int index){
        //要注意防止数组越界异常!!!!
        if(index<0||index>chars.length-1){
        return ' ';
        }
        return chars[index];
    }
    
    }

        
    F.反转数组
     class ArraryReversal//数组反转
    {
    public static void main(String[] args){
        char []chars=new char[]{'I',' ','L','o','v','e',' ','Y','o','u'};
        print(chars);
        System.out.println("*************");
        reversal(chars);
        print(chars);
        
    }

    public static void reversal(char [] chars){//交换方法
        char temp;
        for(int min=0,max=chars.length-1;min<max;min++,max--){
            temp=chars[min];
            chars[min]=chars[max];
            chars[max]=temp;
        }    
    }

    public static void print(char []chars){//打印方法
        for (int i=0;i<chars.length ;i++ ){
            System.out.print(chars[i]);
        }
        System.out.println("");
    }
    
    }

    G.进制转换,这个思维非常好!!用到位运算,补码计算!
    public static void Bridge(int num,int radix){
        if (radix==16){
                toTurn(num,16,15,4);
            }else if (radix==8){
                toTurn(num,8,7,3);
            }else if (radix==2){
                toTurn(num,2,1,1);
            }
    }

    //转化方法
    public static void toTurn(int num,int radix,int Yu,int goBit){
        int count=knowCount(num,radix);
        int []arrNum=new int[count];
        for(int i=0;i<count;i++){
            arrNum[count-1-i]=num&Yu;//倒序存放数组,避免之后反转
            num=num>>goBit;
        }
        System.out.println(turnString(arrNum));
    }

    //通过位运算的方法判断这个数字能拆成多少个4位二进制
    public static int knowCount(int num,int radix){
        int count=0;
            for (;num!=0; count++){//count 就是位数
            if (radix==16){
                num=num>>4;
            }else if (radix==8){
                num=num>>3;
            }else if (radix==2){
                num=num>>1;
            }
        }
        return count;
    }

    //转化成字符串的方法
    public static String turnString(int []chars){
        String str="";
        for (int i=0;i<chars.length ;i++ ){
            char []charsNew=new char[chars.length];
        
            charsNew[i]=replace(chars[i]);
            str=str+charsNew[i];
        }    
        return str;
    }

    //“替换”方法。
    public static char replace(int index){
        char [] chars=new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        return chars[index];
    }

    }

    H.普通查找
    class FindCommon
    {
    public static void main(String[] args){
     int []arr=new int[]{1,15,29,36,43,55,69,75,86,91,106};
     System.out.println(finding(arr,91));
    }

    public static int finding(int []arr,int num){
        for(int i=0;i<arr.length;i++){
            if(num==arr[i]){
                return i;
            }
        }
        return -1;
    }

    }

    
    I.折半查找
     class FindHalf2
    {
    public static void main(String[] args){
     int []arr=new int[]{1,15,29,36,43,55,69,75,86,91,106};
     System.out.println(finding(arr,1));
    }

    public static int finding(int []arr,int num){
        int min=0,max=arr.length-1;
        int mid=(min+max)/2;
        while (min<=max){
            if (arr[mid]==num){
                return mid;
            }else if (arr[mid]<num){
                min=mid+1;
                mid=(min+max)/2;
            }else if (arr[mid]>num){
                max=mid-1;
                mid=(min+max)/2;
            }
        }
        return -1;
    }

    }

数组练习二-----双重循环    
    A.选择排序
     class Select
{
    public static void main(String[] args){
        int []arr=new int[]{1,115,9,336,413,535,169,715,386,191,1206};
        selectSort(arr);
        for (int i=0;i<arr.length ;i++ ){
            System.out.print(arr[i]+" ");
        }
    }
    public static void selectSort(int []arr){
        int temp;
        for (int i=0;i<arr.length ;i++ ){
            for(int j=0;j<arr.length-1;j++){
                if(arr[i]>arr[j]){
                    temp=arr[i];
                    arr[i]=arr[j];
                    arr[j]=temp;
                }
            }
        }
    }
    
}

    B.冒泡排序    //利用打印三角形的思路!亮点!!
    class Bubble
{
    public static void main(String[] args){
        int []arr=new int[]{1,115,9,336,413,535,169,715,386,191,1206};
        bubbleSort(arr);
        for (int i=0;i<arr.length ;i++ ){
            System.out.print(arr[i]+" ");
        }
    }
    public static void bubbleSort(int []arr){
        int temp;
        for (int i=0;i<arr.length ;i++ ){
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j]>arr[j+1]){
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
    }
    
}
    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值