最有效的方法来实时排序

时间:2011-12-13 13:13:51

标签: c sorting data-structures

  

可能重复:
  how to sort data at the time of adding it, not later?

我需要动态排序数据。基本上我有一个数组将插入元素。每次插入后,都应对数据进行排序。实现这一目标的最快方法是什么?

2 个答案:

答案 0 :(得分:6)

实现此目的的最快方法是删除数组并使用二叉​​搜索树代替O(lg n )排序插入。使用数组时,由于需要平均移动 n / 2个元素,因此总是会遇到线性时间插入。

编辑:您还可以使用heap代替BST;可以用数组实现。但是,对于二进制堆,迭代将采用O( n lg n ),而在threaded BST中,可以在O( n < / em>)O(1)额外内存的时间。

答案 1 :(得分:0)

如果在每次插入后对数组进行排序,那么最快的方法是使用二进制搜索算法来查找元素的插入位置,并从该位置开始移动所有元素并向右移动,并将元素插入到您创建的间隙中。

也就是说,如果可以的话,使用BST真的会更好,正如larsmans所说的那样。这样,您可以避免每次插入一个元素时都移动所有元素。