1.1 ???
这个maybe可以从基于比较的排序算法,最好的,最坏时间复杂度
1.2
O(n^2):划分不平衡
T
(
n
)
=
T
(
n
−
1
)
+
T
(
0
)
+
θ
(
n
)
T(n)=T(n-1)+T(0)+\theta(n)
T(n)=T(n−1)+T(0)+θ(n)
1.3
有序:划分完全不平衡:
T
(
n
)
=
T
(
n
−
1
)
+
T
(
0
)
+
θ
(
n
)
T(n)=T(n-1)+T(0)+\theta(n)
T(n)=T(n−1)+T(0)+θ(n)
2.2????!!!
快速排序的左右指针法,划分有三种实现:挖坑、左右指针、前后指针(教材所用)。
这里考察的就是左右指针,指针不停止移动指的是,交换(右指针先移动,遇到小于其的元素就停止移动,然后再移动左指针,左指针遇到大于其的元素就停止移动,这个时候就交换左右指针的元素;然后再从右指针开始移动,重复上述的过程。那么这里停止的意思,就是左右指针遇到其等于的元素也停止,这个时候就会发生交换)。
那么这样排序出来的元素,两指针就会在中间汇合,划分出来的区间基本是n/2。
https://blog.csdn.net/qq_37941471/article/details/80522354
2.3 !!
当三个元素定了的时候,是C答案,但是还有A33的排列组合
E
2.5 !!!
A
用数学方法计算期望,你会发现就是1:1;
设 X=比基准值小的数的个数
E
X
=
∑
k
=
1
n
p
k
X
k
=
∑
k
=
1
n
1
n
(
k
−
1
)
=
n
2
EX= \sum_{k=1}^n p_{k}X_{k} = \sum_{k=1}^n \frac{1}{n}(k-1) = \frac{n}{2}
EX=k=1∑npkXk=k=1∑nn1(k−1)=2n
但是与那个长度为长:短,算出来是1:3的计算,是真的不一样
Y = 较短数组的长度
E
Y
=
∑
i
=
1
n
p
i
∗
X
i
=
1
n
∑
i
=
1
n
X
i
=
2
n
∑
i
=
1
2
/
n
X
i
(
后
半
部
分
与
前
面
对
称
)
=
n
4
EY = \sum_{i=1}^n p_{i}*X_{i} = \frac{1}{n}\sum_{i=1}^n X_{i} = \frac{2}{n}\sum_{i=1}^{2/n} X_{i} \ (后半部分与前面对称) = \frac{n}{4}
EY=i=1∑npi∗Xi=n1i=1∑nXi=n2i=1∑2/nXi (后半部分与前面对称)=4n
故为
n
4
:
3
n
4
\frac{n}{4}:\frac{3n}{4}
4n:43n
牟老师还逼逼了一堆直接可以看出来的方法
第七章快排的ppt还有几个算的知识点,一个三数取中,还有一个还是两个90%以上的时间的比例
2.6
则基准值应该在n/4~3n/4的范围内,则占n的1/2.
3.1 熟悉并且可以记忆
BCE
**错误点:**认为末尾O只能推出答案O,谁知道可以推出 \omega
另外,这道题如果要用substitution的方法去做的话,就硬展开就行,动用数学知识,虽然展开有点复杂,但是可以做到的(下面那个nlog^n的平方更为复杂,展开==)
着重说一下 \omega : T(n) = T(n/4)+T(3n/4) —> 去掉后面那个O(n)—可以推出刚好是 θ ( n ) \theta(n) θ(n) 则可以推出一定比n大
3.2 熟悉并且可以记忆
BCE
考虑熟悉一下这种形式
这个就是很复杂的展开,会用到完全平方公式,但是也会发现展开的时候有规律。当你试到
θ
(
n
l
o
g
2
(
n
)
)
\theta(nlog^{2}(n))
θ(nlog2(n))就会发现大于等于、小于等于都是可以的,BE就自动成立了。
----另外说一下,当n无穷大的时候 log(n)<n^0.5 <log(n)^2
3.3 3.4 3.5???几种排序是要掌握的
BCF
DG
选择:theta(n^2)
冒泡:theta(n)??? 这个要看一下,有点怪异,这个可以看算法笔记 这个是因为这里用的是聪明的冒泡排序,终止条件:一次循环下来没有进行元素的交换,因而是只循环了第一次。
插入:thata(n)
合并: theta(nlog(n)) ???这个也要看一下,是前几章的ppt
快速:theta(n^2)
堆:???不知道
希尔:???不知道