把数组排成最小的数

import java.util.Scanner;

/**
 * 把数组排成最小的数[3 32 321],结果:321323;最小;注意,要考虑大数问题
* 主要是排序问题 *
@author dell * */ public class Main15 { public static void main(String[] args){ Scanner scanner=new Scanner(System.in); Main15 main15=new Main15(); int n; String[] numb; System.out.println("开始..... "); while(scanner.hasNext()){ n=scanner.nextInt(); if(n<=0){ System.out.println("输入不合法默认为10"); } numb=new String[n]; System.out.println("输入数组元素值"); for(int i=0;i<n;i++){ numb[i]=scanner.next(); } numb=main15.sortArray(numb,0,n-1); StringBuilder strBuilder=new StringBuilder(numb[0]); for(int i=1;i<n;i++){ strBuilder.append(numb[i]); } System.out.println(strBuilder); } } private String[] sortArray(String[] numb,int p,int q) { // TODO Auto-generated method stub if(p<q){ int mid=partition(numb,p,q); sortArray(numb, p, mid-1); sortArray(numb, mid+1, q); } return numb; } private int partition(String[] numb,int p,int q){ int i=p; int j; String tmp1,tmp2,tmp3; for(j=p;j<q;j++){ tmp1=numb[j]+numb[q]; tmp2=numb[q]+numb[j]; if(tmp1.compareTo(tmp2)<0){ tmp1=numb[i]; numb[i]=numb[j]; numb[j]=tmp1; i++; } } tmp1=numb[i]; numb[i]=numb[j]; numb[j]=tmp1; return i; } }
原文地址:https://www.cnblogs.com/csxf/p/3598893.html