日期:2014-05-20  浏览次数:20755 次

弱弱的问一下,java api中已实现的排序方法比如快速排序在那些类中
等待挨批中------

------解决方案--------------------
Arrays, Collections
------解决方案--------------------
貌似是归并排序, 不是快速排序, 给个例子你

Java code


package foundations.array;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;

public class DateComparator implements Comparator {
    
    /**
     * 对日期进行排列;越接近当前时间的,越排在前面。
     * 
     * 日期格式:year-month-day xx:xx:xx
     */
    
    
    public int compare(Object obj1, Object obj2) {
        
        String date1 = (String)obj1;
        String date2 = (String)obj2;
        
        ArrayList<Integer> date1Arr = parseDate(date1);
        ArrayList<Integer> date2Arr = parseDate(date2);
        
        int i = 0;
        while (i < date1Arr.size()) {
            if (date1Arr.get(i) > date2Arr.get(i))
                return 1;
            else if (date1Arr.get(i) < date2Arr.get(i))
                return -1;
            else
                i++;
        }
        
        return 0;  
         
    }
    
    
    /**
     * parseDate: 解析日期,从中提取出年月日时分秒
     * 
     * @param Date 所要解析的日期  & 日期格式: year-month-day xx:xx:xx
     * @return 存储 年、月、日、时、分、秒 的数组
     */
    
    public ArrayList<Integer> parseDate(String date)
    {
        ArrayList<Integer> dateTime = new ArrayList<Integer>();
        String[] get = date.split(" ");
        String[] getDate = get[0].split("-");
        String[] getTime = get[1].split(":");
        try {
            for (String s: getDate) {
                int target = Integer.parseInt(s);
                dateTime.add(target);
            }
            for (String s: getTime) {
                int target = Integer.parseInt(s);
                dateTime.add(target);
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return dateTime;
        
    }
     
   
    public static void main(String[] args) {
        
        // 解析日期
        DateComparator dc = new DateComparator();
        ArrayList dateTime = dc.parseDate("2010-10-07 9:03:07");
        Iterator iter = dateTime.iterator();
        while (iter.hasNext()) {
            Integer i = (Integer)iter.next();
            System.out.println(i);
        }
        
        // 对日期排序
        ArrayList<String> dateStrs = new ArrayList<String>();
        dateStrs.add("2010-9-7 9:03:07");
        dateStrs.add("2010-10-6 9:03:07");
        dateStrs.add("2010-9-16 9:03:07");
        dateStrs.add("2010-9-7 10:12:07");
        
        Collections.sort(dateStrs, new DateComparator());
        
        iter = dateStrs.iterator();
        while (iter.hasNext()) {
            String datestr = (String)iter.next();
            System.out.println(datestr);
        }
        
        
    }
}

------解决方案--------------------
Java API中貌似没有实现快速排序,因为这个效率太低了。Java中Arrays和Collections中都有sort()方法,合并排序算法,效率绝对比快速排序高很多。
------解决方案--------------------
探讨
Java API中貌似没有实现快速排序,因为这个效率太低了。Java中Arrays和Collections中都有sort()方法,合并排序算法,效率绝对比快速排序高很多。

------解决方案--------------------
平时用到的工具都在util包里面
常用的工具类:
操作数组的: Arrays
集合: Collections
线程: Excutors