特殊排序:
输入一个正整数数组,把数组中的所有元素拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
例如:输入数组{3,32,321},则这3个数字能拼接成的最小数字为:321323
利用sort()函数。
代码:
#include<iostream>
#include<algorithm>
//#include<cstring>
using namespace std;
string toString(int a)
{
string ans;
while(a)
{
ans+=('0'+a%10);
a/=10;
}
reverse(ans.begin(),ans.end());
return ans;
}
bool compare(int a,int b)
{
string ab=toString(a)+toString(b);
string ba=toString(b)+toString(a);
return ab<ba;
//return ab.compare(ba); //仍有疑惑
}
int main()
{
int arr[]={3,32,321,31,1,2};
int len=6;
sort(arr,arr+len,compare);
for(int i=0;i<len;i++)
{
cout<<arr[i];
}
return 0;
}
结果:

参考:https://blog.youkuaiyun.com/qq_31217423/article/details/76375336
本文介绍了一种特殊的排序算法,该算法用于将数组中的所有元素拼接成一个数,并找到所有可能组合中的最小数字。通过自定义比较函数和使用C++标准库中的sort函数实现。示例代码展示了如何对给定数组进行排序,以找到最小的拼接数字。
1457

被折叠的 条评论
为什么被折叠?



