JAVA常见算法学习笔记

常见算法

查找算法

基本查找(顺序查找)

二分查找\折半查找

数组中的数据必须有序

插值查找(二分查找改进)

要求数组中的数据要比较均匀

斐波那契查找(二分查找改进)

二分改为斐波那契黄金分割数

分块查找

要求块内无序,块间有序
一般分块数为数组长开根号
思路:先确定查找的数在哪个块,再在块中依次查找
class Block{
int max;
int startIndex;
int endIndex;
}

扩展的分块查找

块内无序,块间无交集
class Block{
int max;
int min;
int startIndex;
int endIndex;
}

哈希查找(分块查找的扩展)

主要是对表的建立的思想,邻接表

数表查找

各种查找方式没有优劣之分,主要要看被查找的表的形式是什么样的,选择最合适的算法

排序算法

冒泡排序

选择排序

关键点:在排好之外的序列中找到最小的

插入排序

将无序序列中每个元素依次插入到有序序列中

快速排序

关键点:基准数,比基准数全部在左边,比基准大的全部在右边

递归算法思想

字符串匹配算法

算法API-Arrays

Arrays.toString(arr);转为字符串
Arrays.binarySearch();二分查找
Array.copyOf();拷贝数组
Array.copyOfRange();拷贝数组(指定范围)
Arrays.fill();填充数组
Arrays.sort();排序,默认升序

Lambda表达式(JDK8后新增)

Arrays.sort(arr,new Comparator<Integer>(){
	@Override
	public int compare(Integer o1,Integer o2){
		return o1-o2;
	}
});
//以上匿名内部类通过Lambda表达式可简化为
Arrays.sort(arr,(Integer o1,Integer o2)->{
		return o1-o2;
	}
);
//Lambda表达式简化写法
Arrays.sort(arr,(o1,o2)->o1-o2);

Lambda表达式不强调谁去做,而是怎么做
函数式接口,有且只有一个抽象类的接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值