问题描述:
给定一个非负整数数组,将数组中的数字排列成一个最小的数。例如,给定数组[10, 2, 9],最小的数为"1029"。
解决方案:
要解决这个问题,我们需要重新定义数组元素之间的比较规则。传统的比较规则是按照数字大小进行比较,但是在这个问题中,我们需要根据组合后的数字的大小进行比较。具体地,对于两个数字x和y,我们需要比较的是字符串拼接后的结果xy和yx,如果xy小于yx,则x应该排在y的前面。
基于这个比较规则,我们可以使用任何排序算法来对数组进行排序。这里我们选择使用快速排序算法来实现。
快速排序算法的基本思想是选择一个基准元素,然后将数组划分为两部分,使得左边的元素都小于基准元素,右边的元素都大于基准元素。然后对左右两个部分递归地进行排序,最后将排好序的左右部分合并起来。
下面是使用快速排序算法来解决这个问题的源代码实现:
def min_number(nums):
def compare(x, y