时间复杂度
常数时间操作
- 执行时间固定的为常数时间操作,执行时间不固定不是常数操作
·常见的算术运算(+、-、*、/、%等)
·常见的位运算(>>带符号右移、>>>不带符号右移、<<、|、&、^等)
·赋值、比较、白增、白减操作等
·数组寻址操作

排序算法O(N^2)
选择排序
- 每次确定最小值[0-n-1],[1-n-1],[2-n-1]…
- 每个范围的前界:0,1,2… 由第一个for循环确定 i
- 整个范围 [i-n-1] 由第二个for循环确定——找出最小值
- 进行swap交换

冒泡排序
- 每次确定最值[0-n-1],[0-n-2],[0-n-3]


插入排序
- 时间复杂度与原始待排序数组的有序程度有关
- 完全有序与排序结果一致是O(n)
- 完全有序与排序结果逆序是O(n^2)



二分法
- 适用范畴
- 在一个有序数组中,找某个数是否存在
- 在一个有序数组中,找>=某个数最左侧的位置
- 在一个有序数组中,找<=某个数最右侧的位置
- 局部最小值问题

异或运算
- 异或运算:同0异1
- 异或运算相当于无进制相加。110 | 111 = 001
异或性质:0^N==NN^N==0异或运满足交换律和结合率

- 适用题目
- 整个数组中,只有一个数出现奇数次,其他数均出现偶数次,求取这个数。
int类型的数,提取出最右侧的“1”- 整个数组中,有两种数出现奇数次,其他数均出现偶数次,求取出现奇数次的数。

-
提取出最右侧的“1”
- 提取出整数二进制中“1”的个数


- 提取出整数二进制中“1”的个数
-
整个数组中,有两种数出现奇数次,其他数均出现偶数次,求取出现奇数次的数。


本文概述了常数时间操作如算术、位运算等,深入解析了选择排序、冒泡排序、插入排序的O(N^2)复杂性,以及二分法在有序数组的应用。特别介绍了异或运算在特定问题中的巧妙运用,如查找奇数出现次数的数。
509

被折叠的 条评论
为什么被折叠?



