把数组排成最小数

解题思路:
两个数 a 和 b , 如果 ab < ba 那么ab就是排序的最小数,a应该在左边。

#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
using namespace std;
// 定义排序规则
bool compare(const string& str1, const string &str2)
{
    string s1=str1+str2;
    string s2=str2+str1;
    return s1<s2;
}
// 排序算法
void ComArrayMin(int *pArray, int num)
{
    int i;
    string *pStrArray=new string[num];
// 将整形数组转换成 字符串数组
    for(i=0; i<num; i++)
    {
        stringstream stream;
        stream<<pArray[i];
        stream>>pStrArray[i];
    }
// 利用sort函数 和 compare 规则进行排序
    sort(pStrArray, pStrArray+num, compare);
// 打印出这个最小数字的字符串形式
    for(i=0; i<num; i++)
        cout<<pStrArray[i];

    cout<<endl;
// 释放这个指针
    delete[] pStrArray;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容