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

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

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

    jialisoftw

    java 實(shí)現(xiàn)最小二叉堆排序

    寫(xiě)在前面: 
    一覺(jué)醒來(lái),我就突然有靈感了...... 
    最小二叉堆定義: 
    二叉堆是完全二元樹(shù)或者是近似完全二元樹(shù),最小二叉堆是父結(jié)點(diǎn)的鍵值總是小于或等于任何一個(gè)子節(jié)點(diǎn)的鍵值的堆堆。 
    存儲(chǔ): 
    二叉堆一般用數(shù)組來(lái)表示。 
    根節(jié)點(diǎn)在數(shù)組中的位置是0,第n個(gè)位置的子節(jié)點(diǎn)分別在2n+1和 2n+2; 
    位置k的葉子的父節(jié)點(diǎn)位置為(k-1)/2; 
    實(shí)現(xiàn): 
    Java代碼:  
    1. /** 
    2.  * @description 元素添加到末尾,和它的父節(jié)點(diǎn)比,如果比它小就交換 
    3.  * @param array 
    4.  *  
    5.  * @author LynnWong 
    6.  */  
    7. private int[] getMinBinaryHeap(int[] array){  
    8.     int N = array.length;  
    9.     int minBinaryHeap[] = new int[N];  
    10.     int root;//根的值  
    11.     int heapSize = 0;//記錄插入位置  
    12.     for(int num : array){  
    13.         minBinaryHeap[heapSize]=num;  
    14.         ++heapSize;  
    15.         int pointer = heapSize-1;//當(dāng)前指向的數(shù)組元素位置  
    16.         while(pointer!=0){  
    17.             int leafPointer = pointer;//葉子節(jié)點(diǎn)位置  
    18.             pointer = (pointer-1)/2;//根節(jié)點(diǎn)位置  
    19.             root = minBinaryHeap[pointer];//根節(jié)點(diǎn)  
    20.             if(num>=minBinaryHeap[pointer]){//永遠(yuǎn)把當(dāng)前數(shù)組元素看成葉子與其根比較或者換位  
    21.                 break;  
    22.             }//如果根比葉子大 就交換位置  
    23.             minBinaryHeap[pointer] = num;  
    24.             minBinaryHeap[leafPointer] = root;  
    25.               
    26.         }  
    27.     }  
    28.     return minBinaryHeap;  
    29.       
    30. }  
    Java代碼 : 
    1. /*** 
    2.  * 用隨機(jī)數(shù)測(cè)試二叉堆排序 
    3.  * 測(cè)試10遍,強(qiáng)迫癥似的變態(tài)... 
    4.  */  
    5. public void text(){  
    6.     for(int i=0;i<10;i++){  
    7.         Random rnd = new Random();   
    8.         int [] lala = {rnd.nextInt(6),rnd.nextInt(6),rnd.nextInt(6),rnd.nextInt(6),rnd.nextInt(6),rnd.nextInt(6)};  
    9.         System.out.print("輸入:");  
    10.         for(int a : lala){  
    11.             System.out.print(a+" ");  
    12.         }  
    13.         System.out.println();  
    14.         int []array = this.getMinBinaryHeap(lala);  
    15.         System.out.print("輸出:");  
    16.         for(int a : array){  
    17.             System.out.print(a+" ");  
    18.         }  
    19.         System.out.println();  
    20.     }  

    posted on 2013-01-10 14:01 飛豬一號(hào) 閱讀(1488) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    <2013年1月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統(tǒng)計(jì)

    常用鏈接

    留言簿

    隨筆檔案

    友情鏈接

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国产成人精品免费午夜app| 无码少妇一区二区浪潮免费 | 国产V亚洲V天堂无码| 亚洲w码欧洲s码免费| 亚洲av成人一区二区三区在线播放| 亚洲精品成人网久久久久久 | 中文字幕一精品亚洲无线一区| 999久久久免费精品播放| 亚洲狠狠婷婷综合久久蜜芽| 国产啪亚洲国产精品无码| 中文字幕亚洲免费无线观看日本| 亚洲狠狠婷婷综合久久蜜芽| 久久精品国产亚洲av麻豆| 免费的一级黄色片| 国产精品免费高清在线观看 | 国产va免费精品观看精品 | 一级毛片免费在线播放| 亚洲欧洲精品一区二区三区| 免费一级毛片女人图片| 99视频全部免费精品全部四虎 | 最新中文字幕免费视频| 久久99精品免费一区二区| 亚洲精品第一综合99久久| 亚洲国产另类久久久精品小说| 最近中文字幕无吗高清免费视频| 免费在线黄色电影| 午夜亚洲乱码伦小说区69堂| 亚洲国产日韩在线| 亚洲人成色777777在线观看| 国产又黄又爽又刺激的免费网址| 91精品国产免费网站| 国产高清视频免费在线观看| 亚洲一区二区三区丝袜| 91亚洲国产成人久久精品网站| 亚洲精品无码专区2| 性做久久久久免费看| 18女人毛片水真多免费| 野花香在线视频免费观看大全 | 亚洲av区一区二区三| 91精品免费久久久久久久久| 中国极品美軳免费观看|