算法理论(1)

一:位运算与进制

----基本运算符号:& | ~ ^;

----异或运算:
1、异或是一个数学运算符。应用于逻辑运算。
2、例如:真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假。就是说两个值相 异结果为真。
3、异或的运算方法是一个二进制运算:
  1^1=0
  0^0=0
  1^0=1
  0^1=1
两者相等为0,不等为1.总之,就是这样,n^0=n n^n=0,即任何数与0进行异或,为它本身,两个相同的数进行异或运算,会得到0。

----异或运算法则:
  1. a ^ b = b ^ a
  2. a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c;
  3. d = a ^ b ^ c 可以推出 a = d ^ b ^ c.
  4. a ^ b ^ a = b.
  
----相关题目:
①判断一个数是奇数还是偶数
②判断某二进制数某位是1还是0
③找出数组中唯一重复的一个数
④找出某数二进制位1的个数(多种解法)
⑤一条语句判断某整数是不是2的整数次方
⑥将整数的二进制表示偶数位和奇数位调换位置
⑦用二进制表示0-1之间的浮点数
⑧数组中一个数出现了一次 其他数出现k次求出这个只出现一次的数

二:递归

----用法:自己调用自己
Ⅰ找到一种切割方法
Ⅱ找到递推公式或等量代换

----方法:
①找重复
②找变化
③找边界

----相关题目:
①求n的阶乘
②求i-j中的每一位数
③累加某数组中所有元素(需设定一个参数)
④翻转字符串
⑤斐波那契数列
⑥找两个数的最大公约数
⑦插入排序改递归
⑧汉诺塔问题
⑨ 二分查找的递归方法
⑩插入排序及希尔排序(特殊的插入排序)

----四种必须掌握的排序方法:冒泡 选择 插入 希尔

三、评估算法性能:

----概念:O(f(n))f(n)为n与程序被执行次数的关系

----算法性能排序(由低到高)
a^n n^x n^3 n^2 nlogn n logn

----算法性能:
二分查找>线性查找>最大公因数>各种排序>斐波那契

----排序算法的稳定性
概念:排序后相同数字相对位置不变
稳定:冒泡排序 插入排序
不稳定:选择排序 希尔排序 快排

相关例题:
①小白上楼梯
②旋转数组求最小值(修改二分法)
③在含空字符的有序字符串中索引
④找出数组中最长连续递增子序列

猜你喜欢

转载自blog.csdn.net/m0_52000372/article/details/113435800