普林斯顿算法课第一二周有感

1.并查思想         带压缩路径的带权合并算法(树)

2.栈有两种实现方式:链表和可变化大小的数组

   链表优点:每次push和pop得时间是一定的,总的操作时间比数组大;

   数组优点:在扩张/压缩数组的插入/删除花费时间大,但均摊下来每次插入和删除都比链表快速,显得总的操作时间小。

    Q:何时采用链表方法?

    A:飞机场停飞机,网络中源源不断收到数据包。  因为这样情况下不允许突然来个长时间的插入。

3.选择排序与插入排序比较:

   选择排序无论初始数组有序状况如何,其所耗费的时间复杂度是固定的,都需要对剩余未排序部分进行扫描;

   插入排序很大程度上依赖于初始数组有序程度,若较为有序,则速度很快,比选择排序块,若无序,很有可能接近于冒泡程度。

4.为什么希尔排序是基于插入排序实现的?

   因为刚开始在gap比较大时,每个待排序的数组规模较小,此时各个排序复杂度差不多;

   当gap比较小,如2,1时,则此时经过前面的gap,数组的有序程度已经改善,此时用插入排序会更加快一些。

  Ps:当以gap1进行shell排序后,再进行gap2(gap2 < gap1)排序,则排完后的序列仍遵守gap1的排序结果。

猜你喜欢

转载自www.cnblogs.com/dzy521/p/9543361.html