代码编织梦想

数组的定义和初始化

概念:是一块连续的内存,存储的是相同数据类型的集合

//1.定义且初始化一个数组(静态初始化)
int[] arr1={1,2,3};
//2.定义但未初始化(new关键字)
int[] arr2=new int[10];
//3.动态初始化数组
int[] arr3=new int[]{1,2,3};

这里的数组名叫做引用,数组内容叫做对象
一个引用只能指向一个对象
一个对象可以被多个引用所指向

引用是一个变量,里面存储的值是 地址
既然是变量就要存在上,但引用不一定

下面是一些数组练习

打印数组

public static void main(String[] args) {
        int[] arr={1,2,3,4,5,6};
        print1(arr);
        System.out.println();
        print2(arr);
        System.out.println();
        System.out.println(Arrays.toString(arr));

    }
    public static void print1(int[] arr){
        for (int i = 0; i <arr.length ; i++) {
            System.out.print(arr[i]+" ");
        }
    }
    public static void print2(int[] arr){
        for (int x:arr
             ) {
            System.out.print(x+" ");
        }
    }

打印结果
在这里插入图片描述
创建数组并赋初值1-100

public static void main(String[] args) {
        int[] arr=new int[100];
        for(int i=0;i<=99;i++){
            arr[i]=i+1;
        }
        for (int x:arr
             ) {
            System.out.print(x+" ");
        }
    }

数组拷贝

public static void main(String[] args) {
        int[] arr1={1,2,3,4,5};
        int[] arr2=new int[5];
        copyOf(arr1,arr2);
    }
    public static void copyOf(int[] arr1,int[] arr2){

        for (int i=0;i<arr1.length;i++){
            arr2[i]=arr1[i];
        }
        for (int x:arr2
             ) {
            System.out.print(x+" ");
        }
    }

数组拷贝方法

arraycopy(源数组,开始拷贝位置,目标数组,目标拷贝位置,拷贝长度)
public static void main(String[] args) {
        int[] arr1={1,2,3,4,5};
        int[] arr2=new int[5];
        System.arraycopy(arr1,0,arr2,0,5);
        for (int x:arr2
             ) {
            System.out.print(x+" ");
        }
    }

求数组元素之和

public static void main(String[] args) {
        int[] arr={1,2,3,4,5,6};
        System.out.println(Sum(arr));
    }
    public static int Sum(int[] arr){
        int sum=0;
        for(int i=0;i<arr.length;i++){
            sum+=arr[i];
        }
        return sum;
    }

求平均值

public static void main(String[] args) {
        int[] arr={1,2,3,4,5,6};
        System.out.println(average(arr));
    }
    public static double average(int[] arr){
        int sum=0;
        for(int i=0;i<arr.length;i++){
            sum=sum+arr[i];
        }
        return (double)sum/(double)arr.length;
    }

数组逆序

public static void main(String[] args) {
        int[] arr={0,1,2,3,4,5,6,7,8,9};
        int left=0;
        int right=arr.length-1;
        while(left<right){
            int tmp=arr[left];
            arr[left]=arr[right];
            arr[right]=tmp;
            left++;
            right--;
        }
        for (int x:arr
             ) {
            System.out.println(x);
        }
    }

数组数字排列,偶数在前,奇数在后

public static void main(String[] args) {
        int[] arr={0,1,2,3,4,5,6,7,8,9};
        transform(arr);
        for (int x:arr) {
            System.out.println(x);
        }
    }
    public static void transform(int[] arr){
        int left=0;
        int right=arr.length-1;
        while(left<right){
            while((left<right)&&arr[left]%2==0){
                left++;
            }
            while((left<right)&&arr[right]%2!=0){
                right--;
            }
            int tmp=arr[left];
            arr[left]=arr[right];
            arr[right]=tmp;
        }
    }

数组的冒泡排序

public static void main(String[] args) {
        int[] arr={12,532,53,46,4,7,235,576};
        for (int i=0;i<=arr.length-1;i++){
            for(int j=0;j<arr.length-1-i;j++){
                if(arr[j]>arr[j+1]){
                    int tmp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=tmp;
                }
            }
        }
        for (int x:arr) {
            System.out.println(x);
        }
    }

数组的二分查找

public static void main(String[] args) {
        int[] arr={1,2,3,4,5,6,7,8,9,10};
        System.out.println(Find(arr,4));

    }
    public static int Find(int[] arr,int toFind){
        int left=0;
        int right=arr.length-1;
        while(left<=right){
            int mid=(left+right)/2;
            if(toFind>arr[mid]){
                left=mid+1;
            }
            else if(toFind<arr[mid]){
                right=mid-1;
            }
            else{
                return mid;
            }
        }
        return -1;
    }

检查有序性

public static void main(String[] args) {
        int[] arr={1,2,3,5,6,7};
        System.out.println(Sort(arr));
    }
    public static boolean Sort(int[] arr){
        for (int i=0;i<arr.length;i++){
            if(arr[i]<arr[i+1]){
                return true;
            }
        }
        return false;
    }

找最大元素

public static void main(String[] args) {
        int[] arr={1,3,4,5,6,7346,37,35,6};
        System.out.println(max(arr));
    }
    public static int max(int[] arr){
        int max=arr[0];
        for(int i=1;i<arr.length;i++){
            if(arr[i]>max){
                int tmp=arr[i];
                arr[i]=max;
                max=tmp;
            }
        }
        return max;
    }

这是一些非常基础的代码,不要眼高手低,过一遍.
以上代码运行得没毛病,加油铁汁!

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

LeetCode - Easy - 35. Search Insert Position-爱代码爱编程

Topic Array, Binary Search Description https://leetcode.com/problems/search-insert-position/ Given a sorted array of distinct integers and a target value, return the index if

LeetCode题解:704.二分查找-爱代码爱编程

二分查找(easy) 更好的阅读体验应该是: 审题-思考答题整理-归纳 一、题目 LeetCode:704.二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例: 输入: nums = [-1,0,3,

Leetcode[二分查找] 74. 搜索二维矩阵-爱代码爱编程

Leetcode[二分查找] 74. 搜索二维矩阵 审题代码实现反思 审题 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入:matrix = [[1,3,5,7],[10,11,16,20],[23,3

算法与数据结构(13)------二分查找入门(上)-爱代码爱编程

针对有序数据集合的查找算法:二分查找(Binary Search)算法,也叫折半查找算法。 举个例子: 假设有 1000 条订单数据,已经按照订单金额从小到大排序,每个订单金额都不同,并且最小单位是元。我们现在想知道是否存在金额等于 19 元的订单。如果存在,则返回订单数据,如果不存在则返回 null。 最简单的办法当然是从第一个订单开始,一个一个遍历

codeforces 862E (二分)-爱代码爱编程

原题题面 Dr. Evil is interested in math and functions, so he gave Mahmoud and Ehab array a a a of len

算法与数据结构(14)------二分查找的几种复杂情况(中)-爱代码爱编程

二分查找的变形问题很多,选择几个典型的来讲解,其他的可以借助这个思路自己来分析。假设数据是从小到大排列为前提,如果你要处理的数据是从大到小排列的,解决思路也是一样的。 1.查找第一个值等于给定值的元素 有序数据集合中存在重复的数据,我们希望找到第一个值等于给定值的数据,比如下面这样一个有序数组,其中,a[5],a[6],a[7]的值都等于 8,是重复的

Ubuntu系统从机械硬盘迁移到SSD-爱代码爱编程

将Ubuntu系统从机械硬盘迁移到SSD 以下操作在U盘系统下进行。 使用GParted在SSD上建好分区表,并参考原先机械盘上的分区进行分区。 由于原先系统所在的分区比SSD盘大,使用dd命令拷贝整个分区需先将原先系统的分区缩小,以便SSD能够放得下。使用GParted将机械盘上系统及数据所在分区缩小。 使用dd命令将机械盘系统数据分区整个拷贝到SSD

python拷贝-爱代码爱编程

python拷贝 拷贝 列表,字典,集合都可拷贝 拷贝 基本方法: 方式说明copy()浅拷贝:只拷贝容器第一层,如果里面有其他容器层,则修改后对copy的也有影响deepcopy()深拷贝 :完全分离的2个对象,所有容器层的内容均可修改,不会互相影响。以列表为例 示例如下: 浅拷贝>>> a1 = ['na',

赋值、切片、拷贝-爱代码爱编程

参考:Python赋值、切片、拷贝解析 赋值不可变对象要看是否有缓存机制来决定是否是同一对象 赋值可变对象相当于引用,完全不拷贝 切片相当于浅拷贝 切片:对“是不可变对象的子元素“的修改或增删操作不会影响另一对象 切片:对“是可变对象的子元素“的操作会影响另一对象 对不可变对象进行浅拷贝,相当于深拷贝 对可变对象进行浅拷贝,直接修改一个不会不会影响另