最小数排序

Posted jingwenxing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最小数排序相关的知识,希望对你有一定的参考价值。

题目:

给定数字0~9若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能为首
位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是:10015558.
现给定数字,请编写程序输出能够组成的最小的数。

输入样例1:

0 0 5 8 5 1 5 1

输出样例1:

10015558

输入样例2:

5 6 4 2 3 6 5 0 0 0 6

输出样例2:

20003455666

代码示例:

#include <iostream>

using namespace std;

int main()
{
    int baseNum[10] = { 0 };
    char theGet;
    int count = 0;

    while ((theGet = getchar()) != ‘
‘)
    {
        baseNum[theGet-‘0‘]++;
        count++;
    }

    int n;
    for (n = 1; n < 10; n++)            // 首位判断
    {
        if (baseNum[n] == 0)
            continue;
        else
        {
            cout << n;
            baseNum[n]--;
            break;
        }
    }

    for (n = 0; n < 10; n++)            // 其他位判断
    {
        if (baseNum[n] == 0)
            continue;
        else
        {
            cout << n;
            baseNum[n]--;
            if (baseNum[n] != 0)
                n--;
        }
    }

    return 0;
}


以上是关于最小数排序的主要内容,如果未能解决你的问题,请参考以下文章

排序总结

冒泡排序和鸡尾酒排序的代码分析

冒泡排序与选择排序(代码)

排序算法之选择排序

LeetCode 1877 数组中最大数对和的最小值[排序] HERODING的LeetCode之路

从搜索文档中查找最小片段的算法?