n个数连接得到最小或最大的多位整数(携程)
2016-03-28 12:36
405 查看
package numCombine; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; /** * n个数连接得到最小或最大的多位整数(携程) * @author root * */ public class NumCombine { public static void main(String[] args) { // TODO Auto-generated method stub int data[] = {13,343,312,3}; fun2(data); } //使用java内置sort,构造比较器 public static void fun1(int data[]) { String str_data[] = new String[data.length]; for(int i=0; i<data.length; i++){ str_data[i] = data[i]+""; } //排序 //Arrays.sort(str_data, Collections.reverseOrder()); Arrays.sort(str_data, new MyComprator()); for(int i=0; i<str_data.length; i++){ System.out.println(str_data[i]); } } //自己编写快排进行排序 public static void fun2(int data[]) { String str_data[] = new String[data.length]; for(int i=0; i<data.length; i++){ str_data[i] = data[i]+""; } //排序 quick_sort(str_data, 0, str_data.length-1); for(int i=0; i<str_data.length; i++){ System.out.println(str_data[i]); } } public static void quick_sort(String data[], int begin, int end) { if(begin<end){ int mid = sort(data, begin, end); quick_sort(data, begin, mid-1); quick_sort(data, mid+1, end); } } //快排 public static int sort(String data[], int begin, int end) { String temp = data[begin]; while(begin<end){ while((data[end]+temp).compareTo(temp+data[end])<0 && begin<end){ end--; } data[begin] = data[end]; while((data[begin]+temp).compareTo(temp+data[begin])>0 && begin<end){ begin++; } data[end] = data[begin]; } data[begin] = temp; return begin; }/**/ } //比较器 class MyComprator implements Comparator { public int compare(Object arg0, Object arg1) { String t1=(String)arg0; String t2=(String)arg1; return -1*((t1+t2).compareTo(t2+t1)); } }
相关文章推荐
- 【机房个人重构】报表的制作
- 弹弹弹 打造万能弹性layout
- nvidia-smi: Control Your GPUs
- JSP 自定义标签tld --迭代器标签
- java基础-004
- 腾讯TST现场面试,技术面+HR面(失败)
- postgresql 行转列,拼接字符串
- 【猜数字】
- Java快排
- PyQt4网格布局
- JavaScript 回调函数抽离调用简记
- 闪客工具:好玩的GifCam录制gif软件
- poj2478 Farey Sequence (欧拉函数)
- sublime安装package control及常用插件
- [Nodejs]初探nodejs学习笔记- 如何使用nodejs搭建简单的UDP聊天功能
- 【开源项目13】Volley框架 以及 设置request超时时间
- Android activity的生命周期
- poj1006 / hdu1370 Biorhythms (中国剩余定理)
- 【理解JVM】JVM内存分块和垃圾收集算法(HotSpot)
- Android adb 打开mediascanner