我有一个未排序的数组列表,我希望将这个数组逐一插入到我的自定义数据结构中。当我创建插入函数时,它按顺序插入。
试验arr为{9,10,7,8,5,6,3,4,1,2};
在插入{1,3,5,7,9,10,8,6,4,2}之后的列表
我的插入函数块
void insert(value_type d)
{
if (data.size() == 0)
{
data.push_back(d);
}
else if (data.size() > 0)
{
// get data begin
//std::list<value_type>::iterator iter = data.begin();
for (auto iter = data.begin(); iter != data.end();++iter)
{
if(d > *iter)
{
data.push_back(d);
break;
}
else if (d <= *iter)
{
data.insert(iter,d);
break;
}
}
}
}发布于 2014-02-18 01:39:43
似乎您正在尝试插入插入排序。标准库包括:
在O(logn)中查找新元素的位置- upper_bound是二进制搜索:
var pos = std::upper_bound(data.begin(), data.end(), d);插入以下元素:
data.insert(pos, d);或者作为你整个功能的一条线.
data.insert(std::upper_bound(data.begin(), data.end(), d), d);https://stackoverflow.com/questions/21842628
复制相似问题