- 链表——对于数字的访问和排序,链表貌似不太在行。
- 数组——对这个数组里的元素进行排序吗?恐怕开销会比较大。
- 二叉树——非常适合处理排序的问题。
- 堆——非常适用于基本的排序,并且能够记录最大值和最小值。它实际上很有意思——如果你有两个堆,就能够跟踪最大的那一半元素和最小的
那一半元素。最大的一半保存在小顶堆(min heap)里,其中最小的那个元素在顶端。最小的一半则保存在大顶堆(max heap)里,其中最大的那
个元素在顶端。现在,有了这些数据结构,整个数组中的中间数就很有可能位于这两个堆的顶端。如果这两个堆的大小不一样,你还可以从一个堆
里取出一个元素将它推进到另外一个堆里,很快地将它们“调整”好。