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

时间:2015-10-16 07:35:29

标签: c++ sorting mergesort

我正在尝试对从.txt读入的极大字符串进行排序并对它们进行排序。到目前为止,我可能能够按字母顺序对它们进行排序,但我无法弄清楚如何按长度对它们进行排序,然后按字母顺序对它们进行排序。到目前为止,这是我的代码,希望有人对此有所了解。谢谢!

 <div ng-controller="myCtrl">
    <input type="text" class="form-control" ng-model="input" 
      bs-options="name for name in names" bs-typeahead>

 </div>

2 个答案:

答案 0 :(得分:2)

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

if( dataSetForSort[i].size() < dataSetForSort[j].size() ||
    (dataSetForSort[i].size() == dataSetForSort[j].size() && 
    dataSetForSort[i] < dataSetForSort[j]) )

答案 1 :(得分:1)

您需要定义一个返回正确比较的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;
}

这可以由std :: sort使用,或者根据您的要求制作成运算符