首页 > 编程语言 > 详细

19 把数组排成最小的数

时间:2018-12-12 23:21:33      阅读:195      评论:0      收藏:0      [点我收藏+]

0 引言

问题:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
例如输入数组{332321},则打印出这三个数字能排成的最小数字为321323。

1 抽象问题具体化

举例:输入数组{3,32,321},打印出这三个数字能排成的最小数字.

  1. 3与32相比,32排在3的前边,得到序列32,3;

  2. 321与3相比,321排在3的前边;321与32相比,321排在32的前边,得到序列321,32,3;

  3. 打印序列321323.

2 具体问题抽象分析

  1. 定义排序规则:两个数字,从最高位数字开始比较。

    1.1 如果小,则排在前边;

    1.2 如果大,则排在后边;

    1.3 如果相等,则比较下一位,如果下一位不存在,则比较当前数与前一位的大。

      1.3.1 如果小于,则排前边;

      1.3.2 如果大于,则排后边;

      1.3.3 如果相等,则随意。

  2. 将所有数拼接起来,输出即可.

  3. 为了便于对数中的每个数字单独处理,将数转成字符串.

3 demo

4 代码优化

19 把数组排成最小的数

原文:https://www.cnblogs.com/ghjnwk/p/10111393.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!