读书笔记17.06.07

  1. partition函数除了在快排中的其他作用:实现在长度为n的数组中查找第k大的数字
  2. 不要死板的认为排序算法时间复杂度最第为O(nlogn)。这是对于数量很大的,非重复排序而言的,如果排序数字有一定的范围,则可以考虑使用辅助空间。如:对几万员工的年龄排序,可以用辅助空间0~99,这样时间效率为O(n)
  3. 为什么递归算法效率一般较低?
    ①因为每一次递归要在内存栈中分配空间保存参数,返回地址以及临时变量;
    ②而且压入数据和弹出数据都需要时间。
    ③重复计算
  4. 斐波那契数列的典型应用:青蛙跳台阶,矩形覆盖
    (1)一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 f(n)=f(n-1)+f(n-2)
    (2)我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?f(n)=f(n-1)+f(n-2)
  5. 变态青蛙跳台阶
    一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 数学归纳:2的n-1次方
  6. 二进制数的特点一:
    一个整数减去1时,该整数最右边的1变为0,如果该位置后面有0,则全变为1。
    应用:用来计算整数二进制形式中1个个数
    原理:把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0,那么该整数的二进制表示中有多少个1,就可以进行多少次这样的操作。
    n = ( n - 1) & n;

你可能感兴趣的:(读书笔记17.06.07)