java学习笔记之算法

简单了解基本算法

数值操作 

public class suanfa1 {
    public static void main(String[] args) {
//   算法考察:求最大值最小值平均数总和
//    [10,99]
//    (int)(math.random()*(99-10+1)+10)
        int[] arr = new int[10];
        for(int i = 0;i<arr.length;i++){
            arr[i]=(int)(Math.random()*(99-10+1)+10);
        }
//        遍历数组
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i]+"  ");
        }
        System.out.println();
//      求最大值
        int maxvalue = arr[0];//不写0是因为可能存在负数存在
        for(int i = 1;i<arr.length;i++){
            if(arr[i]>maxvalue){
                maxvalue = arr[i];
            }
        }
        System.out.println("最大值为:"+maxvalue);

//        求最小值
        int minvalue = arr[0];//不写0是因为可能负数存在
        for(int i = 1;i<arr.length;i++){
            if(arr[i]<minvalue){
                minvalue = arr[i];
            }
        }
        System.out.println("最小值为:"+minvalue);

//       求总和
        int sum = 0;
        for(int i = 0;i<arr.length;i++){
            sum+=arr[i];
        }
        System.out.println("总和为:"+sum);

//        求平均值
        double ave = 0;
        ave = sum/arr.length;
        System.out.println("平均值为:"+ave);

    }

}

数值的赋值

public class suanfa2 {
    public static void main(String[] args) {
        /*
        修改arr2的值导致arr1的值发生改变
        是因为将arr1的值赋给了arr2
        而arr1中存放的是堆中的地址
        相当于c语言中的指针
        * */
//        建立arr1数组
        int[] arr1,arr2 ;
        arr1 = new int[]{2,3,5,7,11,13,17,19};
        for(int i = 0;i<arr1.length;i++){
            System.out.print(arr1[i]+"\t");
        }
        System.out.println();
//        给arr2数组赋值
//        不能称作数组的复制,相当于是一个快捷方式
       arr2 = arr1;
//        修改arr2中的偶索引元素,使其等于索引值
        for(int i=0;i<arr2.length;i=i+2){
            arr2[i]=i;
        }
        for(int i = 0;i<arr1.length;i++){
            System.out.print(arr1[i]+"\t");
        }
        
    }
}

数组的复制与反转、二分法查找、线性查找

    public static void main(String[] args) {
        /*
        * 数组的复制
        *数组的反转
        * */
        //  建立arr1/arr2数组
        int[] arr1,arr2 ;
        arr1 = new int[]{2,3,5,7,11,13,17,19};
        for(int i = 0;i<arr1.length;i++){
            System.out.print(arr1[i]+"\t");
        }
        System.out.println("----------");

//        将arr1中的值复制到arr2
        arr2 = new int[arr1.length];
        for(int i = 0;i<arr1.length;i++){
            arr2[i]=arr1[i];
        }
//       打印arr2
        for(int i = 0;i<arr1.length;i++){
            System.out.print(arr2[i]+"\t");
        }
        System.out.println("------");
//      数组的反转方法一
//        for(int i =0;i<arr1.length;i++){
//          for(int i =0;i<arr1.length/2;i++){
//            int temp = arr1[i];
//            arr1[i]=arr1[arr1.length-i-1];
//            arr1[arr1.length-i-1]=temp;
//         }
//        数组的反转方法二
        for(int i = 0,j=arr1.length-1;i<j;i++,j--){
            int temp = arr1[i];
            arr1[i]=arr1[j];
            arr1[j]=temp;
        }
//        方法三是通过两个数组完成
//       for(int i = arr2.length-1;i>=0;i--){
//
//                arr1[arr2.length-i-1]=arr2[i];
//        }
        for(int i = 0;i<arr1.length;i++){
            System.out.print(arr1[i]+"\t");
        }
        System.out.println("---------");
//      数组的查找
//      线性查找
        boolean isFlag = true;
        int dest = 7;
        for(int i = 0;i<arr1.length;i++){
            if(arr1[i]==dest){
                System.out.println(i);
                isFlag = false;
                break;
            }
        }
        if(isFlag){
            System.out.println("不好意思没有找到");
        }
//     二分法查找:(所查找的数组必须有序)
        int dest1=5;
        int head = 0;
        int end = arr1.length-1;
        boolean isFlag1=true;
        while(head<=end){
            int middle = (head+end)/2;
            if(dest1==arr1[middle]){
                System.out.println("找到了"+middle);
                isFlag=false;
            }else if(arr1[middle]>dest1){
                end=middle-1;
            }else{//rr2[middle]<dest1)
                head=middle+1;
            }
        }
        if(isFlag){
            System.out.println("不好意思没有找到");
        }
//       排序算法

    }
}

数组的冒泡排序

public class bubble {
    public static void main(String[] args) {
        int[] arr = new int[]{12,2,3,56,45,23,67,42};
//        冒泡排序
        for(int i=0;i<arr.length-1;i++){
            for(int j=0;j<arr.length-1-i;j++){
                if(arr[j]>arr[j+1]){
                    int temp = arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");
        }
//        boolean equals(int[] a,int[] b);

    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值