Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 按长度合并排序字符串数组_C++_Sorting_Mergesort - Fatal编程技术网

C++ 按长度合并排序字符串数组

C++ 按长度合并排序字符串数组,c++,sorting,mergesort,C++,Sorting,Mergesort,我试图对从.txt读入的一组非常大的字符串进行排序,并对它们进行排序。到目前为止,我可能能够按字母顺序对它们进行排序,但我不知道如何先按长度排序,然后再按字母顺序排序。这是我到目前为止的代码,希望有人能解释一下。谢谢 int lower = 0; int upper = sizeof(dataSetForSort) - 1; int middle = (lower + upper)/2; string Temp[sizeof(dataSetForSort)]; int i = lower,

我试图对从.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]);
    }
int-lower=0;
int upper=sizeof(dataSetForSort)-1;
中间整数=(下+上)/2;
字符串温度[sizeof(dataSetForSort)];
int i=较低,j=中间+1,k=较低;

而(i在比较中,您可以更改为以下内容,以便首先按长度排序,如果长度相等,则按字母顺序排序:

if( dataSetForSort[i].size() < dataSetForSort[j].size() ||
    (dataSetForSort[i].size() == dataSetForSort[j].size() && 
    dataSetForSort[i] < dataSetForSort[j]) )
if(dataSetForSort[i].size()
在比较中,您可以更改为以下内容,以便首先按长度排序,如果长度相等,则按字母顺序排序:

if( dataSetForSort[i].size() < dataSetForSort[j].size() ||
    (dataSetForSort[i].size() == dataSetForSort[j].size() && 
    dataSetForSort[i] < dataSetForSort[j]) )
if(dataSetForSort[i].size()
在比较中,您可以更改为以下内容,以便首先按长度排序,如果长度相等,则按字母顺序排序:

if( dataSetForSort[i].size() < dataSetForSort[j].size() ||
    (dataSetForSort[i].size() == dataSetForSort[j].size() && 
    dataSetForSort[i] < dataSetForSort[j]) )
if(dataSetForSort[i].size()
在比较中,您可以更改为以下内容,以便首先按长度排序,如果长度相等,则按字母顺序排序:

if( dataSetForSort[i].size() < dataSetForSort[j].size() ||
    (dataSetForSort[i].size() == dataSetForSort[j].size() && 
    dataSetForSort[i] < dataSetForSort[j]) )
if(dataSetForSort[i].size()
您需要定义一个
lessthan
函数来返回正确的比较

bool lessthan( const std::string & left_hand_side, const std::string &   right_hand_side )
{
     // sort by length
     if( left_hand_side.length() < right_hand_side.length() ) return true;
     if( left_hand_side.length() > right_hand_side.length() ) return false;
     // sort by alphabet
     if( left_hand_side < right_hand_side ) return true;
     if( left_hand_side > right_hand_side ) return false;

     return false;
}
bool lessthan(常量标准:字符串和左手侧,常量标准:字符串和右手侧)
{
//按长度排序
if(left_hand_side.length()right_hand_side.length())返回false;
//按字母排序
如果(左侧<右侧)返回true;
如果(左侧>右侧)返回false;
返回false;
}

这可以由std::sort使用,也可以根据您的要求生成运算符

您需要定义一个
lessthan
函数,该函数返回正确的比较结果

bool lessthan( const std::string & left_hand_side, const std::string &   right_hand_side )
{
     // sort by length
     if( left_hand_side.length() < right_hand_side.length() ) return true;
     if( left_hand_side.length() > right_hand_side.length() ) return false;
     // sort by alphabet
     if( left_hand_side < right_hand_side ) return true;
     if( left_hand_side > right_hand_side ) return false;

     return false;
}
bool lessthan(常量标准:字符串和左手侧,常量标准:字符串和右手侧)
{
//按长度排序
if(left_hand_side.length()right_hand_side.length())返回false;
//按字母排序
如果(左侧<右侧)返回true;
如果(左侧>右侧)返回false;
返回false;
}

这可以由std::sort使用,也可以根据您的要求生成运算符

您需要定义一个
lessthan
函数,该函数返回正确的比较结果

bool lessthan( const std::string & left_hand_side, const std::string &   right_hand_side )
{
     // sort by length
     if( left_hand_side.length() < right_hand_side.length() ) return true;
     if( left_hand_side.length() > right_hand_side.length() ) return false;
     // sort by alphabet
     if( left_hand_side < right_hand_side ) return true;
     if( left_hand_side > right_hand_side ) return false;

     return false;
}
bool lessthan(常量标准:字符串和左手侧,常量标准:字符串和右手侧)
{
//按长度排序
if(left_hand_side.length()right_hand_side.length())返回false;
//按字母排序
如果(左侧<右侧)返回true;
如果(左侧>右侧)返回false;
返回false;
}

这可以由std::sort使用,也可以根据您的要求生成运算符

您需要定义一个
lessthan
函数,该函数返回正确的比较结果

bool lessthan( const std::string & left_hand_side, const std::string &   right_hand_side )
{
     // sort by length
     if( left_hand_side.length() < right_hand_side.length() ) return true;
     if( left_hand_side.length() > right_hand_side.length() ) return false;
     // sort by alphabet
     if( left_hand_side < right_hand_side ) return true;
     if( left_hand_side > right_hand_side ) return false;

     return false;
}
bool lessthan(常量标准:字符串和左手侧,常量标准:字符串和右手侧)
{
//按长度排序
if(left_hand_side.length()right_hand_side.length())返回false;
//按字母排序
如果(左侧<右侧)返回true;
如果(左侧>右侧)返回false;
返回false;
}

这可以由std::sort使用,也可以根据您的要求生成运算符

我需要创建一个字符串minValue以便与元素进行比较并交换吗?我仍然不太了解按长度对它们进行合并排序的实际过程…编辑:等等,我开始了解您现在所说的内容,但仍然需要一些解释。…我不知道你所说的
minValue
string是什么意思,但是对于你展示的代码,它似乎并不需要。合并排序的解释是一个单独的问题,你可以在这里尝试阅读,我是否需要创建一个字符串minValue以便与元素进行比较并交换?我仍然不太了解合并排序的实际过程按长度排列…编辑:等等,我开始了解你现在说的内容,但仍然需要一些解释…我不确定你所说的
minValue
string是什么意思,但对于你展示的代码来说,它似乎不需要。合并排序的解释是一个单独的问题,你可以在这里尝试阅读,我需要创建一个字符串minVal吗ue以便我可以将其与元素和交换进行比较?我仍然不太了解按长度对它们进行合并排序的实际过程…编辑:等等,我有点开始了解您现在所说的内容,但仍然需要一些解释…我不确定您所说的
minValue
string是什么意思,但对于您显示的代码,它似乎并不需要。合并排序的解释是一个单独的问题,你可以试着在这里阅读,我是否需要创建一个字符串minValue,这样我就可以将它与元素和交换进行比较?我仍然不太了解按长度对它们进行合并排序的实际过程…编辑:等等,我开始了解你现在说的内容,但仍然需要一些解释…我我不知道你所说的
minValu是什么意思