day03--java公共语言基础(终结篇)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/meetbetterhc/article/details/96473318

1.方法

1)格式:修饰符   返回类型   方法名(参数列表){

           方法逻辑体;

}

2)调用:方法名();

有参数的话传入相应的实参,无参数不写

3)常用方法

  • 输入:
    Scanner scanner=new Scanner(System.in);
    
  • Math: 
        Math.sqrt(4);//求根号4,返回的结果是double型
        Math.random();//生成0~1之间的随机数
        Math.max(2,3);//求俩个类型相同的数的最大值
        Math.min(3,4);//求俩个类型相同的数的最小值
        Math.abs(-9);//求一个数的绝对值
        Math.round(4.5);//四舍五入
        Math.floor(4.4);//向下取整
        Math.ceil(3.7);//向上取整
        Math.pow(2,3);//2的3次方
  • Arrays 
        int[] a={1,2,3,4,5,6,7};
        Arrays.sort(a);//排序
        int[] b=Arrays.copyOf(a,9);//复制数组
        Arrays.toString(a);//取元素
        Arrays.equals(a,b);//比较俩个数组是否一致

4)方法重载:方法名相同,参数类型和个数不同

5)形参:定义方法时,参数列表里的形式参数

      实参:调用方法时,传入的参数 

 2.有关算法

1)排序

  • 冒泡排序:任意俩个挨着的比较,小的往前走,第一次走N-1趟,得到最大的在最后边,依次类推每次递减一
package com.neuedu.seventeen;

import java.util.Arrays;

/**
 * 冒泡排序
 * 从小到大的排序
 * 任意俩个相邻的位置比较,先比好的是最大的,放到最后面
 */
public class BubbleSort {
    public static void main(String[] args) {
        int[] a={12,3,55,3,2};
//      进行比较
        //第一次进行N-1次比较,以后依次递减1
        //按址传递
        for (int i = 0; i < a.length-1; i++) {
            for (int j = 0; j <a.length-1-i ; j++) {
                if (a[j]>a[j+1]){
                    int temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
                }
            }
        }
        for (int x : a) {
            System.out.print(x+" ");
        }
    }
}
  • 选择排序:第一个与后边的N-1个依次比较,小的往前,先拍好的是第一个最小的,以此类推
package com.neuedu.seventeen;

/**
 * 选择排序
 * 第一个与之后的所有的比,小的往前
 * 拍好后,第二给与之后的比,小的往前
 * 以此类推
 */
public class SelectSort {
    public static void main(String[] args) {
        int[] a={12,4,2,5,7,21,1};
        for (int i = 0; i < a.length; i++) {
            for (int j = i+1; j < a.length; j++) {
                if (a[j]<a[i]){
                    int temp=a[j];
                    a[j]=a[i];
                    a[i]=temp;
                }
            }
        }
        for (int i : a) {
            System.out.print(i+" ");
        }
    }
}
  • 插入排序:从第二个数开始,小于第一,往前挪
    第三个数,小于第二个往前挪,小于第一个往前挪
    ……
    以此类推
package com.neuedu.seventeen;

/**
 * 插入排序
 * 从第二个数开始,与第一个比较,小于它往前挪,大于它不动
 * 再看第三个数,小于第二个,交换,小于第一个再交换
 * 以此类推
 * 不好理解   动图:E:\图片
 */
public class InsertSort {
    public static void main(String[] args) {
        int[] a={234,21,3,13,2432,2,45};
        for (int i = 1; i < a.length; i++) {//因为认为第一个元素是已经排好序的
            for (int j = i; j >0; j--)
                if(a[j] < a[j-1]) {
                    int temp = a[j-1];
                    a[j-1] = a[j];
                    a[j] = temp;
                }
        }
        for (int i : a) {
            System.out.print(i+" ");
        }
    }
}

2)二分查找

package com.neuedu.seventeen;

import java.util.Scanner;

/**
 * 二分查找
 */
public class BinarySearch {
    public static void main(String[] args) {
        int[] a=new int[]{2,4,5,6,7,8,9};
        int left=0;//代表左边那个数的数组下标
        int right=a.length-1;
        System.out.println("请输入要查找的数");
        Scanner sc=new Scanner(System.in);
        int x=sc.nextInt();
        while (true){
            int middle=(left+right)/2;//中间数的下标
            if (x==a[middle]){
                System.out.println("找到了");
                break;
            }else if(x>a[middle]){
                left=middle+1;
            }else {
                right=middle-1;
            }

            if (a[right]!=x&&a[left]!=x){
                System.out.println("没有这个数");
                break;
            }
        }
    }
}

3)递归

package com.neuedu.test;

/**
 * 递归
 * 编写递归算法程序:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求数列的第40位数是多少。
 */
public class Recuision {
    static int digui(int x){
            if (x > 2) {
                return digui(x - 1) + digui(x - 2);
            } else if(x<=0){
                return -1;
            }else{
                return 1;
        }
    }
    public static void main(String[] args) {
//        另一种方法
        /*int a=1;
        int b=1;
        int f=0;
        for (int i = 2; i < 40; i++) {
            f=a+b;
            a=b;
            b=f;
        }
        System.out.println(f);*/
        System.out.println(digui(40));
    }
}

  3.值传递与址传递

1) 值传递

2)址传递 

4.总结(思维导图)

https://www.processon.com/mindmap/5d318c33e4b0e6d919950e66 

猜你喜欢

转载自blog.csdn.net/meetbetterhc/article/details/96473318