1.冒泡排序的算法优化:
原代码:
public void bubbleSort(int[] a) {
for(int i = a.length - 1; i > 0; i--) {
for(int j = 0; j < i; j++) {
if(a[j] > a[j+1])
//交换,具体实现略
swap(a, j, j+1);
}
}
}
优化后代码:
public void bubbleSort(int[] a) {
boolean exchange;
for(int i = a.length - 1; i > 0; i--) {
exchange = false;
for(int j = 0; j < i; j++) {
if(a[j] > a[j+1]) {
swap(a, j, j+1);
exchange = true;
}
}
if(!exchange) return;
}
}
(循序渐进带你学习时间复杂度和空间复杂度:https://mp.weixin.qq.com/s/GU7GyWj4njyNvNbFUT9yDg)
(最常用的经典数据结构和算法汇总:https://mp.weixin.qq.com/s/WIAVIlh1yIEUcbgoHtRsxw)
2.Hash:一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。(https://blog.csdn.net/u014209205/article/details/80820263)