数组的拷贝与排序

四种拷贝都是浅拷贝:
for循环;
object.clone 会产生新对象; native方法
System.arraycopy(src,srcpos,dest,destpos,length)不产生新对象 底层调用native
Arrays.copyOf ,产生新对象 返回值T[] 底层调用System.arraycopy;

class TestArray2 {
    private int val;
    public void setVal(int val) {
        this.val = val;
    }
    public int getVal() {
        return this.val;
    }
}

public class TestDemo2 {

    public static void main(String[] args) {
        TestArray2[][] testArray2 = new TestArray2[2][2];
        testArray2[0][0] = new TestArray2();
        testArray2[0][1] = new TestArray2();
        testArray2[1][0] = new TestArray2();
        testArray2[1][1] = new TestArray2();
        TestArray2[][] testArray3 = new TestArray2[2][2];
       // System.arraycopy();
        /*for (int i = 0; i < testArray2.length; i++) {
            testArray3[i] = Arrays.copyOf(testArray2[i],testArray2[i].length);
            //System.arraycopy(testArray2[i],0,testArray3[i],0,
                    //testArray2[i].length);
        }*/
        System.out.println(testArray3);
        System.out.println(testArray2);
        testArray3 = Arrays.copyOf(testArray2,testArray2.length);
        System.out.println(testArray3);
        System.out.println(testArray2);


        System.out.println("=============拷贝完成=========");
        for (int i = 0; i < testArray2.length; i++) {
            for (int j = 0; j < testArray2[i].length; j++) {
                System.out.print(testArray2[i][j].getVal()+" ");
            }
        }
        System.out.println();
        for (int i = 0; i < testArray3.length; i++) {
            for (int j = 0; j < testArray3[i].length; j++) {
                System.out.print(testArray3[i][j].getVal()+" ");
            }
        }
        System.out.println();

        testArray2[0][0].setVal(1000000);
        System.out.println("============修改完成=========");
        for (int i = 0; i < testArray2.length; i++) {
            for (int j = 0; j < testArray2[i].length; j++) {
                System.out.print(testArray2[i][j].getVal()+" ");
            }
        }
        System.out.println();
        for (int i = 0; i < testArray3.length; i++) {
            for (int j = 0; j < testArray3[i].length; j++) {
                System.out.print(testArray3[i][j].getVal()+" ");
            }
        }
        System.out.println();

    }


    public static void main4(String[] args) {
        TestArray2[][] testArray2 = new TestArray2[2][2];
        testArray2[0][0] = new TestArray2();
        testArray2[0][1] = new TestArray2();
        testArray2[1][0] = new TestArray2();
        testArray2[1][1] = new TestArray2();
        TestArray2[][] testArray3 = new TestArray2[2][2];
        //clone
        for (int i = 0; i <testArray2.length ; i++) {
            testArray3[i] = testArray2[i].clone();
        }
        System.out.println("=============拷贝完成=========");
        for (int i = 0; i < testArray2.length; i++) {
            for (int j = 0; j < testArray2[i].length; j++) {
                System.out.print(testArray2[i][j].getVal()+" ");
            }
        }
        System.out.println();
        for (int i = 0; i < testArray3.length; i++) {
            for (int j = 0; j < testArray3[i].length; j++) {
                System.out.print(testArray3[i][j].getVal()+" ");
            }
        }
        System.out.println();

        testArray2[0][0].setVal(1000000);
        System.out.println("============修改完成=========");
        for (int i = 0; i < testArray2.length; i++) {
            for (int j = 0; j < testArray2[i].length; j++) {
                System.out.print(testArray2[i][j].getVal()+" ");
            }
        }
        System.out.println();
        for (int i = 0; i < testArray3.length; i++) {
            for (int j = 0; j < testArray3[i].length; j++) {
                System.out.print(testArray3[i][j].getVal()+" ");
            }
        }
        System.out.println();

    }

    public static void main3(String[] args) {
        TestArray2[][] testArray2 = new TestArray2[2][2];
        testArray2[0][0] = new TestArray2();
        testArray2[0][1] = new TestArray2();
        testArray2[1][0] = new TestArray2();
        testArray2[1][1] = new TestArray2();
        TestArray2[][] testArray3 = new TestArray2[2][2];
        for (int i = 0; i < testArray2.length; i++) {
            for (int j = 0; j < testArray2[i].length; j++) {
                testArray3[i][j] = testArray2[i][j];
            }
        }
        System.out.println("=============拷贝完成=========");
        for (int i = 0; i < testArray2.length; i++) {
            for (int j = 0; j < testArray2[i].length; j++) {
                System.out.print(testArray2[i][j].getVal()+" ");
            }
        }
        System.out.println();
        for (int i = 0; i < testArray3.length; i++) {
            for (int j = 0; j < testArray3[i].length; j++) {
                System.out.print(testArray3[i][j].getVal()+" ");
            }
        }
        System.out.println();

        testArray2[0][0].setVal(1000000);
        System.out.println("============修改完成=========");
        for (int i = 0; i < testArray2.length; i++) {
            for (int j = 0; j < testArray2[i].length; j++) {
                System.out.print(testArray2[i][j].getVal()+" ");
            }
        }
        System.out.println();
        for (int i = 0; i < testArray3.length; i++) {
            for (int j = 0; j < testArray3[i].length; j++) {
                System.out.print(testArray3[i][j].getVal()+" ");
            }
        }
        System.out.println();
    }

    public static void main2(String[] args) {
        int[][] array = {{1,2,3},{4,5,6}};
        int[][] brray = new int[2][3];
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                brray[i][j] = array[i][j];
            }
        }
        System.out.println(Arrays.deepToString(array));
        System.out.println(Arrays.deepToString(brray));
        brray[0][0] = 1000;
        System.out.println(Arrays.deepToString(array));
        System.out.println(Arrays.deepToString(brray));
        /*int[][] brray = array;
        System.out.println(Arrays.deepToString(brray));*/
    }

    /*//重载函数
    public static int sum(int a,int b) {//sum(int,int )
        return a+b;
    }
    public static int sum(int a,int b,int c) {//sum(int,int ,int)
        return a+b+c;
    }
    public static int sum(int... array) {//函数签名
    }*/
    public static void main1(String[] args) {
        int[][] array = new int[2][3];
        int[][] array2 = {{1,2,3},{4,5,6},{7,8,9}};

        for (int i = 0; i < array2.length; i++) {
            for (int j = 0; j < array2[i].length; j++) {
                System.out.print(array2[i][j]+" ");
            }
            System.out.println();
        }
        System.out.println(Arrays.toString(array));

        System.out.println(Arrays.deepToString(array));

        int[][] array3 = new int[2][];
        array3[0] = new int[4];
        array3[1] = new int[5];

        System.out.println(Arrays.deepToString(array3));


    }
}

排序:从小到大排序 在array中 内部排序
冒泡:最好的时间复杂度O(n) 最坏的O(n^2)稳定
选择:时间复杂度O(n^2) 不稳定
直接插入排序:最坏的时间复杂度O(n^2) 最好的O(n)即有序的时候 稳定===>优化 shell排序 希尔排序
时间复杂度O(1) O(n) O(n^2) O(log2 N)
一维数组System.out.printin(Arrays.toString(array))
二维数组System.out.printin(Arrays.deepToString(array))
所有引用初始化都为null

public class TestDemo1 {

    public static void bubbleSort(int[] array) {
        int tmp = 0;
        boolean swap = false;
        for(int i = 0;i < array.length-1;i++) {
            for(int j = 0;j < array.length-1-i;j++) {
                if(array[j] > array[j+1]) {
                    tmp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = tmp;
                    swap = true;
                }
            }
            if(!swap) {
                break;
            }
        }
    }

    public static void insertSort(int[] array) {
        int tmp = 0;
        int j = 0;
        for(int i = 1;i < array.length;i++) {
            tmp = array[i];
            for(j = i-1;j >= 0;j--) {
                if(array[j] > tmp) {
                    array[j+1] = array[j];
                } else {
                    break;
                }
            }
            array[j+1] = tmp;
        }
    }

    public static void selectSort(int[] array) {
        int tmp = 0;
        for(int i = 0;i < array.length;i++) {
            for(int j = i+1;j < array.length;j++) {
                if(array[j] < array[i]) {
                    tmp = array[i];
                    array[i] = array[j];
                    array[j] = tmp;
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] array = {12,1,3,5,2,8,78,7};
        selectSort(array);
        System.out.println(Arrays.toString(array));
    }
}

【顶级EI完美复现】电力系统碳排放流的计算方法【IEEE 14节点】(Matlab代码实现)内容概要:本文介绍了名为《【顶级EI完美复现】电力系统碳排放流的计算方法【IEEE 14节点】(Matlab代码实现)》的技术文档,核心内容是基于IEEE 14节点电力系统模型,利用Matlab实现碳排放流的精确计算方法。该方法通过建立电力系统中各节点的功率流动碳排放之间的映射关系,实现对电能传输过程中碳足迹的追踪量化分析,属于电力系统低碳调度碳流管理领域的关键技术。文中强调“顶级EI完美复现”,表明其算法和仿真结果具有较高的学术严谨性和可重复性,适用于科研验证教学演示。; 适合人群:电力系统、能源动力工程、电气工程及其自动化等相关专业的研究生、科研人员以及从事电力系统低碳化、碳排放核算工作的技术人员。; 使用场景及目标:①用于电力系统碳排放流理论的学习仿真验证;②支撑含新能源接入的电力系统低碳调度、碳交易、绿色电力溯源等课题的研究;③为撰写高水平学术论文(如EI/SCI期刊)提供可靠的代码基础和技术参考。; 阅读建议:读者应具备电力系统分析、Matlab编程的基础知识,建议结合电力系统潮流计算、节点导纳矩阵等前置知识进行学习,并通过调整系统参数和运行方式,深入理解碳排放流的分布规律影响因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值