天天看点

JavaSE经典编程题-2JavaSE经典编程题-2

JavaSE经典编程题-2

1.打印十行杨辉三角

1
         1 1
        1 2 1
       1 3 3 1
      1 4 6 4 1
     1 5 10 10 5 1
    1 6 15 20 15 6 1
   1 7 21 35 35 21 7 1
  1 8 28 56 70 56 28 8 1
 1 9 36 84 126 126 84 36 9 1
 
 public class Test{
    public static void main(String[] args) {
        int[][] arr = new int[10][];
        for (int i = 0;i < arr.length;i++){
            arr[i] = new int[i + 1];//      求内层数组的长度
            arr[i][0] = arr[i][i] = 1; //      求内层数组首末元素的值
            if (i > 1){                  //      求内层数组非首末元素的值
                for (int j = 1;j < arr[i].length - 1;j++){
                    arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
                }
            }
        }
//      遍历数组
        for (int i = 0;i < arr.length;i++){
            for (int k = 0;k < arr.length - i;k++){//控制空格
                System.out.print(" ");
            }
            for (int j = 0;j < arr[i].length;j++){//控制输出
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}
           

2.使用递归求1~n的和

public class Test {
    public static void main(String[] args) {
        int num = 5;
        int sum = getSum(num);
        System.out.println(sum);
    }
    public static int getSum(int num){
        if (num == 1){
            return 1;
        }
        return num + getSum(num - 1);
    }
}
           

3.求第n个斐波那契数,斐波那契数列是这样一组的数列1,1,2,3,5,8,13,21,34,55,89,144…

public class Fibonacci{
    public static void main(String[] args) {
        System.out.println(fibonacci(3));
    }
    public static long fibonacci(int n) {
        long result = 1;
        if (n > 2) {
            result = fibonacci(n - 1) + fibonacci(n - 2);
        }
        return result;
    }
}
           

4.数组的求和、平均值,最大最小值及下标,查找,排序

public class ArrayDemo2 {
    public static void main(String[] args) {
        int[] nums = {3,1,7,0,9,3,5,};

//        数组的求和、平均值
        int sum = 0;
        for (int i = 0; i < nums.length; i++) {
            sum += i;
        }
        System.out.println(sum);
        System.out.println(sum / nums.length);

//        最大最小值及下标
        int max = nums[0];//假设第0个元素是数组里的最大值
        int min = nums[0];//假设最大数的下标是0
        int maxIndex = 0;
        int minIndex = 0;
        for (int i = 1; i < nums.length; i++) {
            if (nums[i] > max){
                max = nums[i];
                maxIndex = i;
            }
            if (nums[i] < min){
                min = nums[i];
                minIndex = i;
            }
        }
        System.out.println("最大值为:" + max + ",是数组中第" + maxIndex + "个元素");
        System.out.println("最大值为:" + min + ",是数组中第" + minIndex + "个元素");

        int x = 5;
        int index = -1;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == x){
                index = i;
                break;
            }
        }
        if (index == -1){
            System.out.println("不存在");
        }else {
            System.out.println(index);
        }
    }
}
           

5.二分查找,前提是数组有序

public class BinarySearch {
    public static void main(String[] args) {
        int[] nums = {5,8,9,10,12,20,31,45,78,80};
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int x = scanner.nextInt();

        int low = 0;//最左边
        int high = nums.length - 1;//最右边
        int index = -1;//要查找的元素的索引
        while (low <= high){
            int middle = (low + high) >>> 1;
            if (nums[middle] == x){
                index = middle;
                break;
            }
            if (nums[middle] < x){
                low = middle + 1;
            }else {
                high = middle - 1;
            }
        }
        if (index == -1){
            System.out.println("未找到元素");
        }else {
            System.out.println("下标是:" + index);
        }
        scanner.close();
    }
}
           

6.数组里删除元素

public class DeleteElement {
    public static void main(String[] args) {
        int[] nums = {4,8,2,1,7,6,5,3};
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入要删除的元素下标:");
        int index = scanner.nextInt();

        if (index < 0 || index > nums.length - 1){
            System.out.print("请输入0~" + (nums.length - 1) + "的整数");
        }else {
            int[] newArr = new int[nums.length - 1];

            for (int i = 0; i < newArr.length; i++) {
                if (i < index){
                    newArr[i] = nums[i];
                }else {
                    newArr[i] = nums[i + 1];
                }
            }
            System.out.println(Arrays.toString(newArr));
        }
        scanner.close();
    }
}