Skip to content

Latest commit

 

History

History
 
 

##第八周学习总结 #XOR异或 x^0 = x x^1s = ~x x^(~x) = 1s x^x = 0

#判断奇偶: x % 2 == 1 —> (x & 1) == 1 x % 2 == 0 —> (x & 1) == 0

x >> 1 —> x / 2. 即: x = x / 2; —> x = x >> 1; mid = (left + right) / 2; —> mid = (left + right) >> 1;

X = X & (X-1) 清零最低位的 1 X & -X => 得到最低位的 1

X & ~X => 0

#布隆过滤器

  • 一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索 一个元素是否在一个集合中。
  • 优点是空间效率和查询时间都远远超过一般的算法, 缺点是有一定的误识别率和删除困难。

#LRU Cache 两个要素: 大小 、替换策略

Hash Table + Double LinkedList

#高级排序

  1. 快速排序(Quick Sort)
  • 数组取标杆 pivot,将小元素放 pivot左边,大元素放右侧,然后依次
  • 对右边和右边的子数组继续快排;以达到整个序列有序
  1. 归并排序(Merge Sort)— 分治
  • 把长度为n的输入序列分成两个长度为n/2的子序列
  • 对这两个子序列分别采用归并排序
  • 将两个排序好的子序列合并成一个最终的排序序列
  1. 堆排序(Heap Sort)
  • 堆插入 O(logN),取最大/小值 O(1)
  • 数组元素依次建立小顶堆
  • 依次取堆顶元素,并删除
  1. 计数排序(Counting Sort)
  • 计数排序要求输入的数据必须是有确定范围的整数。将输入的数据值转化为键存 储在额外开辟的数组空间中;然后依次把计数大于 1 的填充回原数组
  1. 桶排序(Bucket Sort)
  • 桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有 限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式 继续使用桶排序进行排)
  1. 基数排序(Radix Sort)
  • 基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类 推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按 高优先级排序