LeetCode Largest Number JAVA 快速排序
2015-01-28 21:21
393 查看
题目链接:https://oj.leetcode.com/problems/largest-number/
Code:
Code:
public String largestNumber(int[] num) { Integer[] a = new Integer[num.length]; for(int i = 0; i < num.length; ++i) a[i] = num[i]; //Arrays.sort(a, new Cmp()); QSort(a, 0, a.length-1); String s = ""; for(int i = a.length - 1; i >= 0; --i) s += Integer.toString(a[i]); int len = s.length(); int i = 0; while(i < len - 1 && s.charAt(i) == '0') i++; return s.substring(i); } // 快速排序 private void QSort(Integer[] num, int i, int j) { // TODO Auto-generated method stub if(i >= j) return; int key = num[i]; int l = i, r = j; while( l < r ) { while(l < r && Bigger(num[r], key)) r--; if(l < r) num[l++] = num[r]; while(l < r && Bigger(key, num[l])) l++; if(l < r) num[r--] = num[l]; } num[l] = key; QSort(num, i, l-1); QSort(num, l+1, j); } // 比较大小函数 private boolean Bigger(int i, int j) { // TODO Auto-generated method stub String m = Integer.toString(i) + Integer.toString(j); String n = Integer.toString(j) + Integer.toString(i); return m.compareTo(n) >= 0; } // 自定义比较类 class Cmp implements Comparator<Integer> { @Override public int compare(Integer o1, Integer o2) { String m = Integer.toString(o1) + Integer.toString(o2); String n = Integer.toString(o2) + Integer.toString(o1); return m.compareTo(n) >= 0 ? 1 : -1; } }
相关文章推荐
- LeetCode Largest Number(排序)
- leetcode 215. Kth Largest Element in an Array 堆排序的简单应用 + 快速排序
- java实现的冒泡、选择、快速排序
- 排序算法复习(Java实现)(二): 插入,冒泡,选择,Shell,快速排序
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- 快速排序--Java实现
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 快速排序方法Java实现与分析
- 快速排序Java源码(递归和非递归)
- 算法-快速排序-java实现
- 【转】排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- java基础知识之 算法 【冒泡排序】【快速排序】
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- 快速排序Java实现
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- 快速排序java实现
- JAVA排序算法实现代码-快速(Quick Sort)排序
- 快速排序的JAVA实现
- java快速排序
- Java 常用排序算法实现--快速排序、插入排序、选择、冒泡