我有一个插入排序功能
void insertionSort(ArrayList<int> myData)
{
for (int i = 1; i < myData.getSize(); i++) {
int index = myData[i];
int j = i;
while (j > 0 && myData[j-1] > index) {
myData.swap(j - 1, j);
j--;
}
myData[j] = index;
}
}
使用此交换功能
template<class TYPE>
void ArrayList<TYPE>::swap(int from, int to) throw(std::out_of_range)
{
int temp = 0;
temp = this->items[from];
this->items[from] = this->items[to];
this->items[to] = temp;
swapNum++;
}
这是我的私人方法的样子
TYPE * items;
int currentLength;
static int swapNum;
我有一个重载的[]运算符和一个getSize()函数,我认为我写的很好而且没有对我的问题做出贡献。现在,如果我在main.cpp中执行此操作
ArrayList<int>m_Data(1);
并在m_Data上附加说4,2,9,1并调用
insertionSort(m_Data);
我收到两个错误
1. Error C2440 '=': cannot convert from 'std::string' to 'int'
关于交换功能和
2. The insertion sort doesn't work
答案 0 :(得分:0)
第一个问题:它应该是TYPE temp = this->items[from]
之类的东西。修复后(我使用STL交换)功能工作。好吧,它适用于STL矢量和交换。如果您仍有问题,那么您的数组结构可能无效。
编辑:在功能&#39;插入排序&#39;你不应该有模板(如在交换功能中)吗?