<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-12  評論-6  文章-0  trackbacks-0
    /**
     * 
     
    */
    package com.zx.ww.arraysort;

    import java.text.Collator;
    import java.util.Arrays;
    import java.util.Calendar;
    import java.util.Comparator;
    import java.util.Locale;

    /**
     * 
    @author xue
     * 2014年9月24日
     
    */
    public class QuickSort {

        
    public static void main(String[] args) {
            
    for (int i = 0; i < 10; i++) {
                test();
            }
        }
        
        
    public static void test() {
            
            
    int len = 8000000;
            
    int[] array = new int[len];
            
    for (int i = 0; i < len; i++) {
                array[i] 
    = (int)(Math.random()*10000);
            }
            
            Calendar cal_before 
    = Calendar.getInstance();
            
    double before = cal_before.getTimeInMillis();
            System.out.println(cal_before.getTime());
            quickSort(array, 
    0, array.length-1);
            
            Calendar cal_after 
    = Calendar.getInstance();
            
    double after = cal_after.getTimeInMillis();
            System.out.println(cal_after.getTime());
            
            
            
    double time = after-before;
            System.out.println(
    "用時:" + time + "ms");
            System.out.println(
    "==================================");
            
        }
        
        
    public static void quickSort(int[] array, int left, int right) {
            
    if(left < right) {
                
    int privot = getPrivot(array, left, right);
                quickSort(array, left, privot
    -1);
                quickSort(array, privot
    +1, right);
            }
            
        }
        
        
        
    //將數組劃分為兩個數組,左邊的數組都比中軸privot小,右邊的都比中軸privot大
        public static int getPrivot(int[] array, int left, int right) {
            
            
    int tmp = array[left];
            
            
    while(left < right) {
                
                
    while(left < right && array[right] >= tmp) {
                    right
    --;
                }
                
                array[left] 
    = array[right];
                
                
    while(left < right && array[left] <= tmp) {
                    left
    ++;
                }
                
                array[right] 
    = array[left];
                
            }
            
            array[left] 
    = tmp;
            
            
    return left;
        }
        
    }

    運行十次輸出的結果:

    Thu Sep 25 13:09:40 CST 2014
    Thu Sep 
    25 13:09:41 CST 2014
    用時:
    1613.0ms
    ==================================
    Thu Sep 
    25 13:09:41 CST 2014
    Thu Sep 
    25 13:09:43 CST 2014
    用時:
    1614.0ms
    ==================================
    Thu Sep 
    25 13:09:43 CST 2014
    Thu Sep 
    25 13:09:45 CST 2014
    用時:
    1691.0ms
    ==================================
    Thu Sep 
    25 13:09:45 CST 2014
    Thu Sep 
    25 13:09:47 CST 2014
    用時:
    1622.0ms
    ==================================
    Thu Sep 
    25 13:09:47 CST 2014
    Thu Sep 
    25 13:09:48 CST 2014
    用時:
    1621.0ms
    ==================================
    Thu Sep 
    25 13:09:49 CST 2014
    Thu Sep 
    25 13:09:50 CST 2014
    用時:
    1615.0ms
    ==================================
    Thu Sep 
    25 13:09:50 CST 2014
    Thu Sep 
    25 13:09:52 CST 2014
    用時:
    1614.0ms
    ==================================
    Thu Sep 
    25 13:09:52 CST 2014
    Thu Sep 
    25 13:09:54 CST 2014
    用時:
    1632.0ms
    ==================================
    Thu Sep 
    25 13:09:54 CST 2014
    Thu Sep 
    25 13:09:55 CST 2014
    用時:
    1614.0ms
    ==================================
    Thu Sep 
    25 13:09:56 CST 2014
    Thu Sep 
    25 13:09:57 CST 2014
    用時:
    1614.0ms
    ==================================
    上述是快速排序八百萬條數據用時基本在1.6s左右。

    接下來看冒泡排序:
    /**
     * 
     
    */
    package com.zx.ww.arraysort;

    import java.text.Collator;
    import java.util.Arrays;
    import java.util.Calendar;
    import java.util.Comparator;
    import java.util.Locale;

    /**
     * 
    @author wuwei
     * 2014年9月24日
     
    */
    public class BubbleSort {

        
    public static void main(String[] args) {
            
            
    for (int i = 0; i < 5; i++) {
                test();
            }
            
        }
        
        
    public static void test() {
            
            
    int len = 80000;
            
    int[] array = new int[len];
            
    for (int i = 0; i < array.length; i++) {
                array[i] 
    = (int)(Math.random()*10000);
            }
            
            Calendar calBefore 
    = Calendar.getInstance();
            System.out.println(calBefore.getTime());
            
            bubbleSort(array);
            
            Calendar calAfter 
    = Calendar.getInstance();
            System.out.println(calAfter.getTime());
            
            System.out.println(
    "總共用時" + (calAfter.getTimeInMillis()-calBefore.getTimeInMillis()) + "ms");
            
            System.out.println(
    "==========================");
            
        }
        
        
    public static void bubbleSort(int[] array) {
            
            
    int tmp;
            
    for (int i = 0; i < array.length; i++) {
                
    for (int j = 0; j < array.length-i-1; j++) {
                    
                    
    if(array[j] > array[j+1]) {
                        tmp 
    = array[j+1];
                        array[j
    +1= array[j];
                        array[j] 
    = tmp;
                    }
                    
                }
            }
        }
        
    }
    運行五次輸出如下結果:
    Thu Sep 25 14:44:14 CST 2014
    Thu Sep 
    25 14:44:23 CST 2014
    總共用時8822ms
    ==========================
    Thu Sep 
    25 14:44:23 CST 2014
    Thu Sep 
    25 14:44:32 CST 2014
    總共用時8829ms
    ==========================
    Thu Sep 
    25 14:44:32 CST 2014
    Thu Sep 
    25 14:44:41 CST 2014
    總共用時8915ms
    ==========================
    Thu Sep 
    25 14:44:41 CST 2014
    Thu Sep 
    25 14:44:50 CST 2014
    總共用時8748ms
    ==========================
    Thu Sep 
    25 14:44:50 CST 2014
    Thu Sep 
    25 14:44:58 CST 2014
    總共用時8529ms
    ==========================
    冒泡排序八萬條數據用時接近9s。

    需要注意的是快速排序是八百萬條數據只用了1.6s左右。


    posted on 2014-09-25 13:09 小人物_Amor 閱讀(274) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 99re在线精品视频免费| 日本激情猛烈在线看免费观看| 国产在线精品一区免费香蕉| 亚洲精品黄色视频在线观看免费资源| 亚洲乱码在线播放| 亚洲综合偷自成人网第页色| 91av免费观看| 亚洲综合色丁香麻豆| 一级毛片**不卡免费播| 亚洲s色大片在线观看| 国产午夜免费高清久久影院| 亚洲AV无码一区二区三区DV| 无码国产精品一区二区免费式芒果| 亚洲va久久久噜噜噜久久男同| 全免费a级毛片免费看| 日本19禁啪啪无遮挡免费动图| 亚洲日本成本人观看| 在线观看亚洲免费视频| 国产亚洲精品2021自在线| 亚洲午夜福利精品无码| 国产午夜免费高清久久影院| 久久亚洲国产成人精品性色| 国拍在线精品视频免费观看| 亚洲色www永久网站| 免费观看国产小粉嫩喷水| 亚洲资源最新版在线观看| 67194成是人免费无码| 亚洲成a人片在线观看天堂无码 | 青娱分类视频精品免费2| 亚洲熟妇无码八V在线播放| 国产一级做a爱免费视频| 久久精品成人免费观看97| 国产成人免费ā片在线观看 | 国产色在线|亚洲| 国产精品嫩草影院免费| 久久精品成人免费观看97| 久久久久亚洲AV成人片| 色www永久免费视频| 中文字幕高清免费不卡视频| 亚洲黄色中文字幕| 暖暖免费高清日本一区二区三区|