我在排序時遇到了問題。我有2個功能。第一個插入一個數字到一個排序列表中,第二個接受一個未排序的列表,命名爲unsorted,創建一個新列表,並重復調用第一個列表,直到新列表成爲未排序輸入的排序版本。然後返回排序列表。在C++中排序並插入
我的理解是第一個新的列表是一個空的列表,它是一種「排序」,並逐一插入每個元素。但我的代碼不知何故不起作用。第一個功能通過了測試,但第二個功能沒有通過測試。這裏是我的代碼:
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;
}
你*有*寫排序自己呢?您不能使用例如['的std :: sort'](http://en.cppreference.com/w/cpp/algorithm/sort)? –
這是一項家庭作業,所以... – user3275943
您的插入排序將只在索引0或索引1處插入一個新項目,因爲無論比較的結果如何,您都會在第一個循環迭代中插入它。 –