【发布时间】:2020-11-12 06:24:07
【问题描述】:
我无法将插入排序算法应用于字符串,因为它。我收到了各种错误,我认为这些错误来自关于字符串与字符类型的问题。
例如:
candidate template ignored: could not match 'stack' against 'basic_string'
operator> (const stack<_Tp, _Container>& __x, const stack<_Tp, _Container>& __y)
插入排序算法是从 geeks for geeks 中提取的,但我只是将其更改为字符串数组。
void insertionSort(string arr[], int n)
{
int i, key, j, unsortedness;
for (i = 1; i < n; i++)
{
key = arr[i];
j = i - 1;
/* Move elements of arr[0..i-1], that are
greater than key, to one position ahead
of their current position */
while (j >= 0 && arr[j] > key)
{
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
int main()
{
//Read in from file stuff missing to save space
int d, lengthStrings, numberStrings; // D will hold the number of data sets
infile >> d;
cout << d << endl;
while (d != 0)
{
infile >> lengthStrings;
infile >> numberStrings;
int numCopy = numberStrings;
int i = 0;
string arrayDna[numberStrings]; //char arrayDna[numberStrings][lengthStrings] instead?;
while (numberStrings != 0)
{
infile >> arrayDna[i];
i++;
numberStrings--;
}
insertionSort(arrayDna[], numCopy);
for (int i = 0; i < numCopy; i++)
cout << arrayDna[i] << "\n";
d--;
所以基本上我需要帮助修复不允许我将此插入算法应用于我自己的字符串数组的错误。
【问题讨论】:
-
是什么让您认为插入排序非常适合这项任务?
-
老师的作业
-
在对一组事物进行排序之前,您必须能够比较两个事物。由于您想按“度量”或“未排序”对事物进行排序,因此您必须编写代码来计算序列的度量。一旦你有了它,你可以修改这个插入排序来比较两个事物的度量,而不是比较事物本身。
-
@101001 -- 你用错了方法。正如 Beta 所提到的,如果您无法从逻辑上弄清楚是什么使一个字符串小于另一个字符串,那么无论您尝试执行哪种类型的排序,排序代码都不存在。
-
加上将两者结合意味着您必须同时调试两种算法。这听起来困难两倍,但事实并非如此。通常它会呈指数增长。保持小而简单且可单独测试,然后像乐高积木一样组装。
标签: c++ arrays sorting insertion-sort