特殊排序:
输入一个正整数数组,把数组中的所有元素拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
例如:输入数组{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