zoukankan      html  css  js  c++  java
  • 数据结构与算法-数组基础

    数组基础:

    导读:

    开始放寒假,准备开一篇数据结构与算法的汇总,记录这枯燥的寒假学习;

    话不多说,先从数组搞起;

    希望能坚持下去!

    数组的基本使用:

    首先对于数组,我们需要知道它基础的规则与运用;

    public static void main(String[] args) {
    //        创建一个数组
            int[] num = new int[3];
    //        获取数组长度
            int length1 = num.length;
            System.out.println("数组长度:"+length1);
    //       为数组中的元素赋值
            num[0]=99;
            num[1]=98;
            num[2]=97;
    //        遍历数组
            for (int i=0;i<length1;i++){
                System.out.printf("数组元素[%d]:%d",i,num[i]);
            }
            System.out.println();
    //        创建数组的时候直接赋值
            int[] arr = {99,98,97,22};
            System.out.println("arr lenght:"+arr.length);
        }
    

    数组的元素添加:

    当了解基础的数组知识时,我们需要在数组的添加、删除、插入、查询上下功夫;

    public static void main(String[] args) {
    //        解决数组长度不可变的问题
            int[] arr = {9,8,7};
    //        快速查看数组中的元素
            System.out.println(Arrays.toString(arr));
    //        要加入的元素
            int dst = 6;
    //        创建一个新的数组,长度是原来数组长度+1
            int[] newArr = new int[arr.length+1];
    //        把原来数组中的数据全部添加到新的数组中
            for(int i=0;i<arr.length;i++){
                newArr[i] = arr[i];
            }
            System.out.println(Arrays.toString(newArr));
    //        把目标元素放入新数组的最后
            newArr[arr.length] = dst;
    //        新数组替换原来数组
            arr = newArr;
            System.out.println(Arrays.toString(arr));
        }
    

    数组的元素删除:

    public static void main(String[] args) {
    //        目标数组
            int[] arr = {9,8,7,6,5,4};
    //        要删除数组的下标
            int dst = 0;
            System.out.println(Arrays.toString(arr));
    //        创建一个新的数组,长度为原来数组长度-1
            int[] newarr  = new int[arr.length-1];
    //        赋值原数组出来要删除的那个元素以外其他的元素
            for(int i=0;i<newarr.length;i++){
    //            要删除的元素之前的元素
                if(i<dst){
                    newarr[i] = arr[i];
                }else{
    //                要删除的元素之后的元素
                    newarr[i] = arr[i+1];
                }
            }
    //        新数组替换旧数组
            arr = newarr;
            System.out.println(Arrays.toString(arr));
    
        }
    

    数组的元素插入:

    public static void main(String[] args) {
    //        目标数组
            int[] arr = {1,3,2,4,5,8};
            System.out.println(Arrays.toString(arr));
    //        需要插入元素的位置
            int dst = 2;
    //        插入新的元素
            int data = 99;
    //        新的数组
            int[] newarr = new int [arr.length+1];
    
            for (int i=0;i<arr.length;i++){
                if (i <dst){
                    newarr[i] = arr[i];
                }else{
                    newarr[i+1] = arr[i];
                }
            }
            newarr[dst] = data;
            arr = newarr;
            System.out.println(Arrays.toString(arr));
    
        }
    

    以上实例没有做过多的解释,如果有Java基础的话,还是很好理解的;

    针对以上学习的知识,我们实现一个简易版的增删改查;

    数组升级版:

    构造函数部分:

    package JavaDataStructure.arrayUpgrade;
    import java.util.Arrays;
    public class MyArray {
        private int[] array;
    //    初始化数组
        public  MyArray() {
            array = new int[0];
        }
    //    获取数组长度方法
        public int getLength(){
            return array.length;
        }
    //    查看数组信息
        public void show(){
            System.out.println(Arrays.toString(array));
        }
    //    向数组末尾添加数据
        public void add(int data){
    //        申请一个新的数组,长度比原数组长度+1
            int[] newarr = new int[array.length+1];
    //        将原数组中的数据全部保存到新的数组中
            for(int i=0;i<array.length;i++){
                newarr[i] = array[i];
            }
    //        将添加的数据加到新数组的最后,原数组的长度大小刚好时最后一个数据的位置
            newarr[array.length] = data;
            array = newarr;
        }
    //    查找数组中的元素下标
        public int search(int data){
            int index=-1;
            for (int i=0;i<array.length;i++){
                if(array[i]==data){
                    index=i;
                }
            }
            return index;
        }
    //    删除数组中的数据
        public void delete(int data){
            int index=search(data);
    //        检查数组是否有数据
            if(index<0 || index>array.length-1){
    //        异常提醒
                throw new RuntimeException("下标越界!");
            }
    //        申请一个新的数组
            int[] newarr = new int[array.length-1];
            for (int i=0;i<newarr.length;i++){
                if (i<index){
                    newarr[i] = array[i];
                }else{
    //                想要删除元素的后面元素
                    newarr[i] = array[i+1];
                }
            }
    //        新数组替换旧数组
            array = newarr;
        }
        public void insert(int index,int data){
            int[] newarr = new int[array.length+1];
    //        将原数组中的元素放入新数组中
            for (int i=0;i<array.length;i++){
    //            将插入下标之前的元素放入新数组中
                if (i<index){
                    newarr[i] = array[i];
                }else{
    //                将插入下标之后的元素放入新数组,放之前需要留出一个位置
                    newarr[i+1] = array[i];
                }
    
            }
    //        插入新元素
            newarr[index] = data;
    //        新数组替代旧数组
            array = newarr;
    
        }
    //		替换元素
        public void set(int index,int data){
            if(index<0 || index >array.length){
                throw new RuntimeException("下标越界!");
            }
            array[index-1] = data;
        }
    }
    
    

    测试函数部分:

    package JavaDataStructure.arrayUpgrade;
    import JavaDataStructure.arrayUpgrade.MyArray;
    public class TestMyarray {
        public static void main(String[] args) {
    //        实例化数组对象
            MyArray ma = new MyArray();
    //      向数组末尾添加数据
            ma.add(3);
            ma.add(2);
            ma.add(11);
    //        显示数组中的元素
            ma.show();
    //        显示查找元素的下标
    //        System.out.println(ma.search(4));
    //        显示当前数组大小
            System.out.println(ma.getLength());
    //        删除操作
            ma.delete(2);
            ma.show();
    //        插入操作
            ma.insert(0,4);
            ma.insert(2,42);
            ma.show();
    //        替换指定位置的元素
            ma.set(4,33);
            ma.show();
        }
    }
    

    结束:

    每天进步一点点,希望各位有所收获.....

  • 相关阅读:
    【MFC】对话框自带滚动条的使用
    【MFC】MFC DLEdit 设计属于自己的编辑框_鼠标悬停
    【MFC】MoveWindow();函数使用详解
    【MFC】SetWindowPos函数使用详解
    模板 key+1
    lazyload 分页加载
    缓慢显示隐藏
    js计算日期的前几天的日期
    判断子元素(or属性)是否存在
    动态加载的数据,hover效果
  • 原文地址:https://www.cnblogs.com/xbhog/p/14306988.html
Copyright © 2011-2022 走看看