Java排序string数组
2012-09-02 23:48
197 查看
简述:
Java获取输入之后,存到list里 , 按照字符串快速排序(数字优先于含有非数字的字符串)
知识点:
1. 字符串读入,存取
2. 快速排序
3. List与Array数据结构的转换
代码:
输入及输出:
Java获取输入之后,存到list里 , 按照字符串快速排序(数字优先于含有非数字的字符串)
知识点:
1. 字符串读入,存取
2. 快速排序
3. List与Array数据结构的转换
代码:
package sort_string; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.List; public class SortString { /** * Sort Class * @param array or list */ private static class Sort{ private String[] strArray = null; public Sort(String[] strArray){ this.strArray = strArray; } public Sort(List<String> strList){ this.strArray = new String[strList.size()]; this.strArray = strList.toArray(this.strArray); } private boolean CheckNum(String str){ for(int i = 0;i < str.length();i++){ if(str.charAt(i) > '9' || str.charAt(i) < '0') return false; } return true; } private boolean CompareTwoStrings(String a, String b){ if(CheckNum(a) && CheckNum(b)){ if(a.length() > b.length()){ int numOfZeroAddedOfB = a.length() - b.length(); StringBuilder zeros_of_b = new StringBuilder(); for(int i = 0;i < numOfZeroAddedOfB;i++){ zeros_of_b.append("0"); } b = zeros_of_b.toString() + b; }else{ int numOfZeroAddedOfA = b.length() - a.length(); StringBuilder zeros_of_a = new StringBuilder(); for(int i = 0;i < numOfZeroAddedOfA;i++){ zeros_of_a.append("0"); } a = zeros_of_a.toString() + a; } } return a.compareTo(b) > 0 ? true : false; } private int Partition(int start, int end){ String baseValue = strArray[start]; int basePos = start; for(int i = start + 1;i <= end;i++){ if(CompareTwoStrings(baseValue, strArray[i])){ basePos++; Swap(basePos, i); } } Swap(start, basePos); return basePos; } private void QuickSort(int start, int end){ if(start < end){ int basePos = Partition(start, end); QuickSort(start, basePos - 1); QuickSort(basePos + 1, end); } } private void Swap(int pos1, int pos2){ String tempValue = strArray[pos1]; strArray[pos1] = strArray[pos2]; strArray[pos2] = tempValue; } public String[] getSortedArray(){ try{ QuickSort(0, strArray.length - 1); }catch(NullPointerException e){ System.out.print("null array!"); } return strArray; } public List<String> getSortedList(){ try{ QuickSort(0, strArray.length - 1); }catch(NullPointerException e){ System.out.print("null array!"); } return java.util.Arrays.asList(this.strArray); } } /** * Test Main */ public static void main(String[] args){ InputStream inputStream = System.in; InputStreamReader inputStreamReader = new InputStreamReader(inputStream); BufferedReader bufferReader = new BufferedReader(inputStreamReader); try{ String[] strArray = null; String lineStr = null; while(!(lineStr = bufferReader.readLine()).equals("")){ //use space to split strArray = lineStr.split(" "); } // start to sort and results output Sort sort = new Sort(strArray); for(String str : sort.getSortedList()){ System.out.println(str); } }catch(IOException e){ e.printStackTrace(); } try{ bufferReader.close(); inputStreamReader.close(); inputStream.close(); }catch(IOException e){ e.printStackTrace(); } } }
输入及输出:
相关文章推荐
- java笔试题,对int数组排序后用String返回
- java代码-----String数组进行排序。是英文的字符串
- java String[]字符串数组自动排序的简单实现
- java 之Sting类型的List集合的汉字排序和String类型数组的汉字排序及List<Bean>排序
- Java String[] 字符串数组去重,排序,toString
- java String[]字符串数组自动排序
- Java学习之数组1(1.数组的声明;2.元素为引用数据类型的数组;3.关于main方法里的String[] args;4.数组排序;5.数3退1 数组算法,(用数组模拟链表);6数组查找之二分法;7数组的拷贝)
- java基础知识回顾之---java String final类普通方法的应用之字符串数组排序
- JAVA数组的排序
- 【Java】ArrayList<String>转化为String数组
- java程序:在排序好的数组中添加一个数字,将添加后的数字插入到数组合适的位置。怎么写啊?
- Java 数组详解 - 用法、遍历、排序、实用API
- java 数组比较排序
- Java Arrays类进行数组排序
- java数组排序,二分查找
- Java中char数组(字符数组)与字符串String类型的转换方法
- Java基础-数组——String字符串
- 重拾编程之路--leetcode(java)-排序数组范围
- Java简单数组排序(冒泡法)
- 如鹏java学习进程 String数组转换Int数组