Java实现——把正整数数组的元素拼成一个最小的数
来源:互联网 发布:曼秀雷敦洗面奶 知乎 编辑:程序博客网 时间:2024/06/03 19:01
转自几个面试经典算法题(http://www.cnblogs.com/sunniest/p/4596182.html)题目四
这个算法的思想和快速排序的思想相似。先把第一个元素p当作中间数,数组前后各有一个索引begin、end。先从后索引对应元素e起,如果ep>pe或e=p,那么后索引往前移动,直到后索引等于前索引,或ep<pe。交换e、p元素。再从前索引对应元素b起,如果pb>bp或b=p,那么前索引后移,直到前索引等于后索引或pb<bq,交换p、b。这时,“小于”p的都在p左边(这里小于的意思是,两个数a、b拼成一个数时,a小于b指ab<ba),“大于”p的都在p右边(这里大于的意思是,两个数a、b拼成一个数时,a大于b指ab>ba)。再对p的两边子数组各自进行递归处理。
//数组组成的最小数import java.util.Arrays;public class MinNumberFromArray {private void swap(int[] array , int m , int n){int t = array[m];array[m] = array[n];array[n] = t;}public boolean isMBiggerThanN(int m , int n){String s1 = String.valueOf(m);String s2 = String.valueOf(n);int i = Integer.valueOf(s1 + s2);int j = Integer.valueOf(s2 + s1);if(i > j){return true;}else{return false;}}public int partition(int[] array , int left , int right){int partition = array[left];while(left < right){while(left < right && (partition == array[right] || isMBiggerThanN(array[right] , partition))){right--;}swap(array , left , right);while(left < right && (partition == array[left] || isMBiggerThanN(partition , array[left]))){left++;}swap(array , left , right);}return left;}public void qsort(int[] array , int left , int right){if(left < right){int position = partition(array , left , right);qsort(array , left , position - 1);qsort(array , position + 1 , right);}}public static void main(String[] args) {MinNumberFromArray m = new MinNumberFromArray();int[] a = {2 , 11 , 5 , 52};m.qsort(a, 0, a.length - 1);System.out.println(Arrays.toString(a));}}
阅读全文
0 0
- Java实现——把正整数数组的元素拼成一个最小的数
- 拼成最小的数
- 拼成最小的数
- 拼成最小的数
- Java给定一个数组,数组元素是一些正整数,求这些正整数收尾详解得出的最大数或最小数
- acm 拼成最小的数
- 1097 拼成最小的数
- 把数组排成最小的数(Java实现)
- 把数组排成最小的数java实现
- java 把数组排成最小的数
- 把数组排成最小的数 java
- Comparator 实现集合中元素的比较.输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这321323
- 输入一个正整数数组,输入一个正整数数组,把数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
- 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个
- 把数组中的元素排成最小的数
- 51NOD 1097 拼成最小的数
- 51nod 1097 拼成最小的数
- 51nod 1097 拼成最小的数
- 数组有没有length()方法?String有没有length()方法?
- Hadoop日记Day20---ZooKeeper系列(三)
- Java 对象和类
- 【公告】北京賽車7碼8碼走勢技巧穩定計畫
- C++中的虚函数简介(上)
- Java实现——把正整数数组的元素拼成一个最小的数
- 在自己写的html中点击button,页面会自动刷新的问题
- opencv 3D摄像头不能读取画面
- HGO工具CoordTool坐标七参数转换
- JavaScript笔记(CommonJS规范)
- Hadoop日记Day20---ZooKeeper系列(二)
- 电商笔记-01
- MySQL的Replace into 与Insert into on duplicate key update真正的不同之处
- ASP专业实习(1)--后台添加与展示栏目