java数组2

Arrays数组工具类

数组转字符串 toString()

int[] arr = {5,2,9,1}; System.out.println(Arrays.toString(arr)); // 输出:[5, 2, 9, 1]

数组排序 sort()

默认升序,底层优化排序,效率高

int[] arr = {5,2,9,1}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); // 输出:[1, 2, 5, 9]

比较两个数组是否相同 equals()

比较内容是否完全一致(长度 + 每个元素)

int[] a = {1,2}; int[] b = {1,2}; System.out.println(Arrays.equals(a,b)); // true

二分查找 binarySearch()

前提:数组必须先升序排序

内存结构

数组创建但是不初始化,数组变量在栈中,存储的是地址,基本类型变量存储在栈中,存的直接是数据,基本类型可变,引用类型不可变说的是基本类型的数据可以直接改变,引用类型的地址不能改变

基本类型:数据值直接可变 引用类型:地址不可变,但内部内容可变

局部变量(方法里的变量)规则:

  • 八大基本类型局部变量:没有默认值
  • 引用类型局部变量(数组、对象):也没有默认值

冒泡排序

java 复制代码
public class Demo5 {
    public static void main(String[] args) {
        //冒泡排序
        //从前往后依次比较相邻的两个,如果逆序,就交换顺序
        int[] arr={2,6,34,4,67,7};
        for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-1-i;j++){//第二轮比较就会比上一轮少比较一次,第一轮是10次,第二轮是9次
    if(arr[j]>arr[j+1]){
        int temp=arr[j];
        arr[j]=arr[j+1];
        arr[j+1]=temp;
    }
}
        }
        System.out.println(Arrays.toString(arr));




    }
}

时间复杂度,空间复杂度

  1. 时间复杂度

衡量:算法跑得多快、执行多少次代码

不看具体秒数,只看数据量变大时,循环增长的趋势

统一用大O表示:O()

  1. 空间复杂度

衡量:算法运行时,额外开辟了多少新内存

只看「额外新增」的空间,原本的数组/输入不算。

冒泡排序

1. 时间复杂度

  • 最坏 / 平均情况:O(n^2)
  • 最好情况(数组已经有序):原版冒泡没优化还是 O(n^2)加了flag优化后:O(n)
    冒泡、选择、插入 都是经典 O(n^2)级别慢排序

2. 空间复杂度
O(1)
✅ 解释:
只定义了一个临时变量 temp 用来交换,
没有新建数组、没有新集合、没有额外大量空间
这种只用到常数个临时变量的,叫 原地排序 / 常数级空间 O(1)

常见复杂度等级

从快 → 慢:

  1. O(1) 常数(只几行代码,无循环)
  2. O(log n) 对数(二分查找)
  3. O(n)线性(单层 for 循环)
  4. O(nlog n) 高效排序(快速、归并)
  5. O(n^2) 双层循环(冒泡、选择、插入)

对于冒泡排序,系统进行时,有比较次数和赋值移动的时间,逆序的数组n,比较次数(n-1)+(n-2)+....+1

每次比较都需要交换。交换时3次赋值。

复杂度O(n^2)

相关推荐
代码飞天1 小时前
算法与数据结构之树——让数据查找更加迅速
数据结构·算法
贾斯汀玛尔斯1 小时前
每天学一个算法--外部排序(External Sorting)
算法
故事和你911 小时前
洛谷-算法2-2-常见优化技巧1
开发语言·数据结构·c++·算法·动态规划·图论
酉鬼女又兒1 小时前
JavaLeetCode 第一题「两数之和」:从暴力枚举到一遍哈希表的正确与错误实现,详解HashMap核心知识点及常见陷阱
java·开发语言·数据结构·算法·leetcode·职场和发展·散列表
黎阳之光2 小时前
视频孪生重构轨交数字孪生新范式|黎阳之光以自主核心技术破解落地难题
大数据·人工智能·算法·安全·数字孪生
JackSparrow4142 小时前
彻底理解Java NIO(一)C语言实现 单进程+多进程+多线程 阻塞式I/O 服务器详解
java·linux·c语言·网络·后端·tcp/ip·nio
小江的记录本2 小时前
【微服务与云原生架构】Serverless架构、FaaS/BaaS、核心原理、优缺点
java·后端·微服务·云原生·架构·系统架构·serverless
谢谢 啊sir2 小时前
L2-060 大语言模型的推理 - java
java·人工智能·语言模型
云淡风轻~窗明几净2 小时前
关于TSP的sealine算法与角谷猜想(2026-04-25)
数据结构·人工智能·算法·动态规划·模拟退火算法