乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      堆排序(java)

       dongsibei 2014-04-24

      堆排序(java)

         堆排序適合于大量數(shù)據(jù)的排序,堆排序的前續(xù)工作花費(fèi)的時(shí)間比較多,下面我們以大根堆為例說說:
      大根堆,就是根節(jié)點(diǎn)是最大的元素,所以每次把最大的元素選出來,與最后的一個(gè)元素交換,然后再把前n-1個(gè)元素(也就是除最后一個(gè)元素)進(jìn)行一個(gè)堆的重構(gòu),讓其具有大根堆的性質(zhì),重復(fù)上面的過程,直到只剩一個(gè)元素為止。這個(gè)過程其實(shí)是個(gè)選擇排序的過程,但是少了交換的次數(shù),堆排序的時(shí)間復(fù)雜度是nlogn。

      下面是我寫的demo程序,僅供參考:

      public class HeapSort {
      
       /**
        * 維持一個(gè)大根堆的性質(zhì)
        * 
        * @param heap
        * @param from
        * @param to
        */
       private static void keepHeap(int[] a, int n, int i) {
        int x = a[i];
        int j = 2 * i + 1;
        while (j <= n - 1) {
         if (j < n - 1 && a[j] < a[j + 1])
          ++j;
         if (a[j] > x) {
          a[i] = a[j];
          i = j;
          j = 2 * i + 1;
         } else
          break;
        }
        a[i] = x;
       }
      
       /**
        * 
        * 堆排序 
        * 原理:每次把最大的元素(即:堆根)與最后一個(gè)元素交換,
        * 然后把前n-1個(gè)元素進(jìn)行堆的重構(gòu),直到只剩一個(gè)元素為止。
        * 
        * 
        * @param a
        */
       private static void heapSort(int[] a) {
        int n = a.length;
        while (n > 0) {
         int tmp = a[0];
         a[0] = a[n - 1];
         a[n - 1] = tmp;
         keepHeap(a, --n, 0);
        }
       }
      
       public static void main(String[] args) {
        
      
        int[] ar = new int[1000000];
        for (int i = 0; i < 1000000; ++i) {
         ar[i] = (int) (Math.random() * 1000001);
        }
        int n = ar.length;
      
        long b = System.currentTimeMillis();
        for (int i = ((n >> 1) - 1); i >= 0; --i) {
         keepHeap(ar, n, i);
        }
      
        heapSort(ar);
      
        System.out.println(System.currentTimeMillis() - b);
        
       }
      }
      

      文章來自:http://blog.163.com/lazy_p/blog/static/13510721620104715715445/

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多