JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java 新手區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 Re:[問題]5個數字比大小 [Re:liminjun]
sungo

瘋狂口罩大盜



發文: 822
積分: 17
於 2004-01-30 15:40 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
liminjun wrote:
我很懶.......沒有硬性規定要使用自製排序法的話...我就直接使用...Arrays.sort

以下是Arrays.sort方法的原始碼片段:(很長的一串)
假如是作大量資料排序的話,不知道速度快不快?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public static void sort(long[] a) {
        sort1(a, 0, a.length);
    } 
private static void sort1(long x[], int off, int len) {
        // Insertion sort on smallest arrays
        if (len < 7) {
            for (int i=off; i<len+off; i++)
                for (int j=i; j>off && x[j-1]>x[j]; j--)
                    swap(x, j, j-1);
            return;
        }
 
        // Choose a partition element, v
        int m = off + (len >> 1);       // Small arrays, middle element
        if (len > 7) {
            int l = off;
            int n = off + len - 1;
            if (len > 40) {        // Big arrays, pseudomedian of 9
                int s = len/8;
                l = med3(x, l,     l+s, l+2*s);
                m = med3(x, m-s,   m,   m+s);
                n = med3(x, n-2*s, n-s, n);
            }
            m = med3(x, l, m, n); // Mid-size, med of 3
        }
        long v = x[m];
 
        // Establish Invariant: v* (<v)* (>v)* v*
        int a = off, b = a, c = off + len - 1, d = c;
        while(true) {
            while (b <= c && x[b] <= v) {
                if (x[b] == v)
                    swap(x, a++, b);
                b++;
            }
            while (c >= b && x[c] >= v) {
                if (x[c] == v)
                    swap(x, c, d--);
                c--;
            }
            if (b > c)
                break;
            swap(x, b++, c--);
        }
 
        // Swap partition elements back to middle
        int s, n = off + len;
        s = Math.min(a-off, b-a  );  vecswap(x, off, b-s, s);
        s = Math.min(d-c,   n-d-1);  vecswap(x, b,   n-s, s);
 
        // Recursively sort non-partition-elements
        if ((s = b-a) > 1)
            sort1(x, off, s);
        if ((s = d-c) > 1)
            sort1(x, n-s, s);
    }
 
    /**
     * Swaps x[a] with x[b].
     */


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
13923 [問題]5個數字比大小 yysun 4965 2004-01-30 12:15
12435 Re:[問題]5個數字比大小 liminjun 209 2004-01-30 12:20
11243 Re:[問題]5個數字比大小 yysun 195 2004-01-30 22:51
10878 Re:[問題]5個數字比大小 Yoshi 270 2004-01-30 22:56
11246 Re:[問題]5個數字比大小 weaker 804 2004-01-30 22:59
10362 Re:[問題]5個數字比大小 yysun 171 2004-01-30 23:01
10159 Re:[問題]5個數字比大小 yysun 104 2004-01-30 23:05
9779 Re:[問題]5個數字比大小 summerly 0 2004-02-01 15:24
10605 Re:[問題]5個數字比大小 sungo 455 2004-02-01 18:04
10032 Re:[問題]5個數字比大小 weaker 421 2004-02-01 18:19
7993 Re:[問題]5個數字比大小 hk88a12 38 2006-04-09 11:11
9946 Re:[問題]5個數字比大小 weaker 19 2004-02-01 18:01
9887 Re:[問題]5個數字比大小 sungo 535 2004-02-01 19:04
9963 Re:[問題]5個數字比大小 sungo 444 2004-02-01 19:28
9536 Re:[問題]5個數字比大小 yysun 24 2004-02-02 07:12
13318 Re:[問題]5個數字比大小 sungo 688 2004-02-02 16:17
9603 Re:[問題]5個數字比大小 minqing 184 2004-02-02 17:01
9560 Re:[問題]5個數字比大小 summerly 62 2004-02-02 09:43
9473 Re:[問題]5個數字比大小 browser 50 2004-02-02 10:00
11122 Re:[問題]5個數字比大小.....請容小弟Test~ Thanks summerly 613 2004-02-02 17:30
8942 Re:[問題]5個數字比大小 cloudtree 77 2004-12-11 03:59
8618 Re:[問題]5個數字比大小 SUPERCOOLMAN 173 2004-12-18 10:22
9967 Re:[問題]5個數字比大小 liminjun 528 2004-01-30 12:21
9906 Re:[問題]5個數字比大小 louisz 27 2004-01-30 12:28
9799 Re:[問題]5個數字比大小 Duncan 359 2004-01-30 13:11
10201 Re:[問題]5個數字比大小 yysun 167 2004-01-30 13:32
9835 Re:[問題]5個數字比大小 swpoker 69 2004-01-30 13:43
9736 Re:[問題]5個數字比大小 yysun 705 2004-01-30 14:29
9661 Re:[問題]5個數字比大小 liminjun 522 2004-01-30 15:06
10521 Re:[問題]5個數字比大小 sungo 2049 2004-01-30 15:40
11800 Re:[問題]5個數字比大小 liminjun 980 2004-01-30 15:57
10038 Re:[問題]5個數字比大小 sungo 219 2004-01-30 16:35
14215 Re:[問題]5個數字比大小 Yoshi 272 2004-01-30 16:59
11367 Re:[問題]5個數字比大小 sungo 225 2004-01-30 19:15
9442 Re:[問題]5個數字比大小 Yoshi 88 2004-01-30 19:21
9877 Re:[問題]5個數字比大小 liminjun 116 2004-01-30 21:03
9469 Re:[問題]5個數字比大小 Yoshi 130 2004-01-30 21:41
9913 Re:[問題]5個數字比大小 sungo 83 2004-01-30 21:12
9684 Re:[問題]5個數字比大小 Duncan 446 2004-01-30 16:05
9885 Re:[問題]5個數字比大小 louisz 1193 2004-01-30 16:41
11612 Re:[問題]5個數字比大小 sungo 773 2004-01-30 14:42
9715 Re:[問題]5個數字比大小 yysun 104 2004-01-30 15:20
9859 Re:[問題]5個數字比大小 liminjun 213 2004-01-30 15:22
10126 Re:[問題]5個數字比大小 yysun 122 2004-01-30 15:43
» JWorld@TW »  Java 新手區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8