我正在尝试对从.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/

10-11 02:25
查看更多