O记法。是算法最坏情况的最高阶次
选择排序:从第i个开始看,看到最后一个,选择最小的作为第i个的值。一共N-1轮; O(N^2)
冒泡排序:从第1个看,第1个大于第2个就交换,一直到最后,就能确定最后一个值。一共n-1轮; O(N^2)
对上面代码swap函数的解释:^异或 有1为1,相同为0.
满足的规律
例题:(1)一个数组,中有一个数出现了奇数次,其余出现了偶数次,求这个数?
( 2)一个数组,中有两种数出现了奇数次,其余出现了偶数次,求这两种数?
(1)所有数异或即可
(2)假设这两种数是a,b,所有数异或的结果是 a^b记为eor。a,b不相等,所以a^b不等于0.
a^b的二进制上必有一个数是1,并且在这一位上a,b的二进制不相等。
因此找到任意一位不为1 的那位。代码里找到最右的不为1 的。
(eor先非再加一再与自己与)
a,b可以分为两类,这一位上是1,和这一位上是0,让上面这个结果只去异或 在这一位上是1的 就能得到a,b中的一个记为eor'' eor''与eor异或得到另一个
插入排序:在N张牌里,从第二张牌往前看,比较。轮数就是N-1张牌。
二分法(1)查找有序的数组是否有一个num。
(2)查找>=num的最左侧(或者<=num的最右侧)位置。
(3)数组,无序,相邻的不相等,求一个局部最小;