/avatar.jpg
|

61B-35: Sorting and Algorithmic Bounds

math problems N!Ω(NN)? N! ∈ \Omega (N^{N}) ? log(N!)Ω(NlogN)? log(N!) ∈ \Omega (NlogN) ? NlogNΩ(log(N!))? NlogN∈ \Omega (log(N!)) ? √ 所以可以推出: NlogNΘ(logN!) NlogN ∈ \Theta (logN!) log(N!)Θ(NlogN) log(N!) ∈ \Theta (NlogN) TUCS用时 上下界? the ultimate comparison sort run time Ω(NlogN) \Omega(NlogN) O(NlogN) O(NlogN) 下面开始证明: 考虑下界,对n个物体进行排序,有N!种可能,用两两比大小,考虑决策树的高度H=log2N! H = \log_2 N! 因此下界为 Ω(log(N!)) \Omega (log(N!)) 或者 Ω(NlogN) \Omega (NlogN) 上界通过TUCS的性质可以通过具体示例反证得到,比如用merge sort

61B-34: More Quick Sort, Stability, Shuffling

More quick sort, Stability, Shuffling quick sort VS merge sort QuicksortL3S = left + 3-scan + shuffle Quicksort_LTHS: Tony Hoare partition scheme: L ptr 仅仅指向小的 G ptr 仅仅指向大的 ptr walk towards to each other, stopping on a hated item 两个都停下来的话, 交换一下, 然后移动其中一个 when ptrs cross, done. 和G交换pivot Not random smarter pivot selection: median Quicksort_PickTH 考虑了如何计算数组地址的复杂度, 以及如何选择pivot的复杂度。 worst case: Θ(NlogN) \Theta(NlogN) 但实际上并没有那么好,因为计算中位数的复杂度是Θ(N)\Theta(N)。耗费了更多时间。 quick select–using partitioning worst case: a sorted array Θ(N2) \Theta(N^2)