4.数组学习

数组

数组的主要问题

定义、初始化、遍历、内存存储
引用变量数组内存的是地址,基本变量数组内存的是值
自己造数组的少,集合里很多数组

数组中的算法

1.数组元素赋值
2.数值型数组的计算
3.数组的复制、反转、查找(线性查找、二分查找)
4.数组排序(冒泡排序、快速排序)

数组复制:要先new出一个新数组,再通过遍历来复制
反转:头尾交换、第二个和倒数第二个交换,循环条件是length/2
查找:

  • 线性查找(从前往后一个个找)
  • 二分法查找(折半查找),前提是数组数据要有序(没有就得先排序),实现方法是首索引、末索引,再定位中间,数据量大的时候更快
    排序:
    衡量排序算法的优劣:
  • 时间复杂度(关键字比较次数和移动次数)
  • 空间复杂度(需要多少辅助内存)
  • 稳定性:若Key A = Key B,排序后A,B次序不变,则排序算法是稳定的
    排序算法分类:内部排序(内存中完成),外部排序(数据多,内存完成不了,需要借助外部存储器,常见是多路归并排序,外部排序=多次内部排序)
    十大内部排序算法:选择(直接选择排序、堆排序),交换(冒泡排序,快速排序),插入(直接插入排序,折半插入排序,Shell排序),归并排序,桶式排序,基数排序
    算法的五大特征:input,output,finiteness,definiteness,effectiveness
冒泡排序

遍历一次,将最大的放到最后,再遍历1到n-1次……每次冒泡最大的放到最后

快速排序

速度最快,是指数级的,类似于细胞分裂

排序的横向对比

平均时间:快速排序最快,但worst case scenario下步入堆排序和归并排序

工具类:Arrays

Arrays是操作数组的工具类,定义了很多操作数组的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值