【发布时间】:2015-10-28 03:06:13
【问题描述】:
所以我正在尝试对列表列表进行排序。在每个子列表中,元素是包含运行时的类。这是我用来对列表进行排序的整数变量。
但是,如果最小的运行时位于列表的末尾,则列表不会 100% 自行排序。我在终端输出下方附加了一张图片以进行可视化。
代码如下:
void sort( list<list<MetaData> > &omegaList )
{
// variables
list<list<MetaData> >::iterator cursor = omegaList.begin();
list<list<MetaData> >::iterator ptr = omegaList.begin();
list<list<MetaData> >::iterator end = omegaList.end();
// start the bubble sort...
for(; cursor != end; cursor++)
{
// iterate through the list
for(; ptr != end; ptr++)
{
// compare runtimes of different lists
if( ptr->front().getProcessRunTime() < cursor->front().getProcessRunTime() )
{
// swap locations of lists in omegaList
swap( *ptr, *cursor );
// reset
cursor = ptr = omegaList.begin();
}
}
}
}
如果有人可以向我解释为什么它不会查看最后一个元素,然后告诉我如何修复它,我将不胜感激。
【问题讨论】:
-
我不确定您的错误在哪里,但我认为您的 冒泡排序 实现不正确。
-
嗯,这或多或少只是“这就像冒泡排序一样效率极低,所以我将称之为冒泡排序。”
-
你为什么不使用
std::sort? -
好问题。我不知道它,我不确定我将如何实现它,因为我有一个列表列表,并且它是需要在更大列表中排序的子列表。
标签: c++ list sorting stl iterator