• 算法


    算法

    合并两个有序数组

     public  void method(int[] arr1, int[] arr2) {
            //新建一个新数组用来存放合并后的值
            int length = arr1.length + arr2.length;
            int[] arr = new int[length + 1];
            //定义两个指针对数据进行遍历
            //arr1两个下标
            int i = 0;
            //arr2两个下标
            int j = 0;
            //新数组下标
            int k = 0;
            //嵌套遍历循环,当两个数组无序的情况
    //        for (int k = 0; k < arr1.length; k++) {
    //            for (int l = 0; l < arr2.length; l++) {
    //
    //            }
    //        }
            //再思考,两个有序数组,合并为一个数组。有序的话遍历其中一个完成后,另外一个剩余补全的直接在最后
            while (i < arr1.length && j < arr2.length) {
                //比较两个数组的大小并索引递减
                if (arr1[i] <= arr2[j]) {
                    arr[k] = arr1[i];
                    i++;
                } else {
                    arr[k] = arr2[j];
                    j++;
                }
                k++;
            }
            //第一个数组没完
            while (i < arr1.length) {
                arr[k] = arr1[i];
                i++;
                k++;
            }
            //第二数组没完
            while (j < arr2.length) {
                arr[k] = arr2[j];
                j++;
                k++;
            }
            //输出打印
            System.out.println(Arrays.toString(arr));
        }
    }
    

    数组实现栈

     /**
     * 数组实现栈
     */
    public class StackArr {
        private static final int valueCapacity = 16;
        /**
         * 存放基础数据
         */
        int[] arr;
        /**
         * 栈顶指针
         */
        int i = 0;
        /**
         * 栈尾指针
         */
        int j = 0;
    
        public StackArr() {
            arr = new int[valueCapacity];
        }
    
        /**
         * 是否为空
         *
         * @return
         */
        public boolean isEmpty() {
            //栈顶指针等于栈尾指针
            if (i == j) {
                return true;
            }
            return false;
        }
    
        /**
         * 是否满
         *
         * @return
         */
        public boolean isFull() {
            //栈顶指针等于栈尾指针
            if (j == arr.length) {
                return true;
            }
            return false;
        }
    
        public int pop() {
            //空的时候报异常
            if (isEmpty()) {
                new IndexOutOfBoundsException("空");
            }
            j--;
            int value = arr[j];
            arr[j] = 0;
            return value;
        }
    
        public void push(int value) {
            //满的时候报异常
            if (isFull()) {
                new IndexOutOfBoundsException("已满");
            }
            arr[j] = value;
            j++;
        }
    }
    
  • 相关阅读:
    Pytorch学习(一)基础语法篇
    CSAPP深入理解计算机系统(第二版)第三章家庭作业答案
    理解DP(持续更新)
    LeetCode题解 | 215. 数组中的第K个最大元素
    快速排序
    浅谈设计模式(java)——从lol来看观察者模式
    <小虾米的android学习之旅1>Android框架
    程序员如何用技术变现?
    为了反击爬虫,前端工程师的脑洞可以有多大?
    如何成为一名爬虫工程师?(顺带提供工作机会)
  • 原文地址:https://www.cnblogs.com/JunQiang-Ma/p/14649627.html
Copyright © 2020-2023  润新知