代码之家  ›  专栏  ›  技术社区  ›  sharkin

Microsoft的stl::list::sort()使用哪种排序算法?

  •  2
  • sharkin  · 技术社区  · 16 年前

    注意:我不小心贴了 this question 如果不指定我使用的是哪种STL实现,我觉得它不能真正更新,因为它会使大多数答案过时。

    因此,正确的问题是:假设我使用微软Visual C++的STL库,下面的代码中使用了哪种排序算法?:

    list<int> mylist;
    
    // ..insert a million values
    
    mylist.sort();
    
    4 回复  |  直到 16 年前
        1
  •  8
  •   Michael Burr    16 年前

    只是为了不必依赖二手信息,排序代码就在 list 标题-大约35行。

    似乎是一个修改过的迭代(非递归)合并排序,最多有25个箱(我不知道这个合并排序变体是否有特定的名称)。

        2
  •  3
  •   Jerry Coffin    16 年前

    至少在最新版本中(例如,VC++9.0/vs 2008),MS VC++使用合并排序。

        3
  •  2
  •   AnT stands with Russia    16 年前

    VC6附带的STL是P.J.Plauger版本的库(dinkumware),它使用了合并排序 std::list<>::sort() . 我不知道MS软件包的更新版本。

        4
  •  -1
  •   Chris Marisic    16 年前

    据我所知,它是内向的: http://en.wikipedia.org/wiki/Introsort