排序并插入C++
Sort and insert in C++
我在排序时遇到了问题。我有2个功能。第一个将一个数字插入到排序列表中,第二个接收一个名为unsorted的未排序列表,创建一个新列表,并重复调用第一个列表,直到新列表是未排序输入的排序版本。然后返回排序列表。
我的理解是第一个新列表是一个空列表,它有点"排序",并将每个元素一个接一个地插入其中。但是我的代码不知何故不起作用。第一个函数通过了测试,但第二个函数没有通过。这是我的代码:
void insertInOrder(list<int>& sorted, int number)
{
if (sorted.empty())
{sorted.push_back(number);
else
{
for(list<int>::iterator I = sorted.begin();I!= sorted.end();I++)
{
if (*I <=number)
{
sorted.insert((++I),number);// since I increases another time here
--I;//decrease once back
return;
}
else
{
sorted.insert(I,number);
return;
}
}
}
}
std::list<int> reorder(std::list<int>& unsorted)
{
std::list<int> ordered;
for (list<int>::iterator J = unsorted.begin(); J!=unsorted.end(); J++)
{
insertInOrder(ordered, *J);
}
return ordered;
}
我认为
你想要的是,如果要插入的值小于或等于当前节点,则什么都不做并继续循环,否则插入并返回。这当然可以写成:如果要插入的值大于列表中的当前节点,则将其插入当前节点之后并退出循环。
所以
if (number > *I)
{
sorted.insert(++I, number); // Insert after current node
break; // Exit loop
}
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 预处理器:插入结构名称中的前一个行号
- 在未初始化映射的情况下,将值插入到映射的映射中
- 如何在c++中只将键插入到bimap的一侧
- 如何将结构插入到集合中并打印集合的成员
- C++json插入数组
- Visual Studio 2019:插入多个C++风格的单行注释
- nlohmann-json将一个数组插入到另一个数组中
- 有效地使用std::unordered_map来插入或增加键的值
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 正在插入动态数组
- 插入或删除时获取usb的dos_name
- 叮叮当当在修复时插入多个"覆盖"说明符
- 链表c++插入,所有情况都已检查,但没有任何工作
- 将重物插入std::map
- C++17 - 使用自定义分配器的节点提取/重新插入 - 适用于 clang++/libc++,但不适用于 libstd
- 在数字之间插入 + 或 - 符号以使其等于整数
- 在字符串中插入空格
- 重载运算符的范围是什么?它是否会影响作为类成员的集合的插入函数?