array.sort java_关于Java中Array.sort()排序原理,越详细越好!

展开全部

是 Arrays.sort(a); 吧

给你看32313133353236313431303231363533e4b893e5b19e31333335323964源码

=============/*      */   public static void sort(int[] paramArrayOfInt)

/*      */   {

/*   96 */     sort1(paramArrayOfInt, 0, paramArrayOfInt.length);

/*      */   }

//

/*      */   private static void sort1(int[] paramArrayOfInt, int paramInt1, int paramInt2)

/*      */   {

/*  558 */     if (paramInt2 

/*  559 */       for (i = paramInt1; i 

/*  560 */         for (j = i; (j > paramInt1) && (paramArrayOfInt[(j - 1)] > paramArrayOfInt[j]); j--)

/*  561 */           swap(paramArrayOfInt, j, j - 1);

/*  562 */       return;

/*      */     }

/*      */

/*      */

/*  566 */     int i = paramInt1 + (paramInt2 >> 1);

/*  567 */     if (paramInt2 > 7) {

/*  568 */       j = paramInt1;

/*  569 */       k = paramInt1 + paramInt2 - 1;

/*  570 */       if (paramInt2 > 40) {

/*  571 */         m = paramInt2 / 8;

/*  572 */         j = med3(paramArrayOfInt, j, j + m, j + 2 * m);

/*  573 */         i = med3(paramArrayOfInt, i - m, i, i + m);

/*  574 */         k = med3(paramArrayOfInt, k - 2 * m, k - m, k);

/*      */       }

/*  576 */       i = med3(paramArrayOfInt, j, i, k);

/*      */     }

/*  578 */     int j = paramArrayOfInt[i];

/*      */

/*      */

/*  581 */     int k = paramInt1;int m = k;int n = paramInt1 + paramInt2 - 1;int i1 = n;

/*      */     for (;;) {

/*  583 */       if ((m <= n) && (paramArrayOfInt[m] <= j)) {

/*  584 */         if (paramArrayOfInt[m] == j)

/*  585 */           swap(paramArrayOfInt, k++, m);

/*  586 */         m++;

/*      */       } else {

/*  588 */         while ((n >= m) && (paramArrayOfInt[n] >= j)) {

/*  589 */           if (paramArrayOfInt[n] == j)

/*  590 */             swap(paramArrayOfInt, n, i1--);

/*  591 */           n--;

/*      */         }

/*  593 */         if (m > n)

/*      */           break;

/*  595 */         swap(paramArrayOfInt, m++, n--);

/*      */       }

/*      */     }

/*      */

/*  599 */     int i3 = paramInt1 + paramInt2;

/*  600 */     int i2 = Math.min(k - paramInt1, m - k);vecswap(paramArrayOfInt, paramInt1, m - i2, i2);

/*  601 */     i2 = Math.min(i1 - n, i3 - i1 - 1);vecswap(paramArrayOfInt, m, i3 - i2, i2);

/*      */

/*      */

/*  604 */     if ((i2 = m - k) > 1)

/*  605 */       sort1(paramArrayOfInt, paramInt1, i2);

/*  606 */     if ((i2 = i1 - n) > 1) {

/*  607 */       sort1(paramArrayOfInt, i3 - i2, i2);

/*      */     }

/*      */   }

/*      */

/*      */

/*      */   private static void swap(int[] paramArrayOfInt, int paramInt1, int paramInt2)

/*      */   {

/*  614 */     int i = paramArrayOfInt[paramInt1];

/*  615 */     paramArrayOfInt[paramInt1] = paramArrayOfInt[paramInt2];

/*  616 */     paramArrayOfInt[paramInt2] = i;

/*      */   }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值