我有N个数字,我想按数字对每个数字进行排序。(在我最初的问题中,我想通过这些(贪婪方法(得到最大的数字(例如,如果我们有5个数字9 1000 845 8000 56在第一步中,我会选择9,因为9是所有第一位数字中最高的
在第二步中(因为已经选择了9(,下一个最高的第一个数字是8,但当两个或更多的数字有相同的数字时,我会比较它们的下一个数字,所以我会选择845。
在这种情况下,如果我排序,我将得到以下结果9 845 8000 56 1000。
我的问题是如何在c++中实现这一点?
提前感谢
您可以通过向sort
函数传递自定义比较函数来获得预期结果。
比较功能可能是这样的:
bool compare(int a, int b) {
ostringstream x, y;
x << a; y << b;
return x.str() > y.str();
}
...
sort(array, array+n, compare);
...
在这个比较函数中,我们将integer
数据转换为string
数据,并简单地比较字符串值以获得预期的排序数组。