码迷,mamicode.com
首页 > 编程语言 > 详细

19 把数组排成最小的数

时间:2018-12-12 23:49:54      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:dem   3.3   把数组排成最小的数   最小数   3.2   比较   一个   nbsp   输出   

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 把数组排成最小的数

标签:dem   3.3   把数组排成最小的数   最小数   3.2   比较   一个   nbsp   输出   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!