我正在尝试对从.txt读取的大量字符串进行排序,并对它们进行排序。到目前为止,我大概可以按字母顺序对它们进行排序,但是我不知道如何先按长度对它们进行排序,然后再按字母对它们进行排序。到目前为止,这是我的代码,希望有人对此有所了解。谢谢!
int lower = 0;
int upper = sizeof(dataSetForSort) - 1;
int middle = (lower + upper)/2;
string Temp[sizeof(dataSetForSort)];
int i = lower, j = middle + 1 , k = lower;
while(i <= middle && j <= upper)
{
if( dataSetForSort[i] < dataSetForSort[j] )
{
Temp[k].assign(dataSetForSort[i]);
i++;
}
else
{
Temp[k].assign(dataSetForSort[j]);
j++;
}
k++;
}
if(i > middle )
{
for(int h = j ;h <= upper ; h++ )
{
Temp[k].assign(dataSetForSort[h]);
k++;
}
}
else
for(int h = i; h<= middle ; h++ )
{
Temp[k].assign(dataSetForSort[h]);
k++;
}
for(int i = lower; i <= upper ; i++)
{
dataSetForSort[i].assign(Temp[i]);
}
最佳答案
在比较中,您可以更改为以下内容,以便首先按长度排序,如果长度相等,则按字母顺序排序:
if( dataSetForSort[i].size() < dataSetForSort[j].size() ||
(dataSetForSort[i].size() == dataSetForSort[j].size() &&
dataSetForSort[i] < dataSetForSort[j]) )
关于c++ - 合并按长度排序的字符串数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33164936/