<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)論排行榜

    主站蜘蛛池模板: 免费国产综合视频在线看 | 成在人线av无码免费高潮水| 成人网站免费观看| 久久精品国产亚洲77777| 波多野结衣免费一区视频| 奇米影视亚洲春色| aa级毛片毛片免费观看久| 亚洲综合另类小说色区| 中文字幕免费播放| 亚洲精品无码av人在线观看| 99精品视频免费| 亚洲天天做日日做天天欢毛片| 69视频在线观看高清免费| 亚洲欧洲国产日韩精品| 曰批全过程免费视频网址| 亚洲va精品中文字幕| 天天摸天天操免费播放小视频| 亚洲国产精品无码久久| 亚洲AV伊人久久青青草原| 中国一级特黄的片子免费| 亚洲一区免费观看| 男男AV纯肉无码免费播放无码| 亚洲国产日韩a在线播放| 亚洲高清无码在线观看| 暖暖日本免费中文字幕| 亚洲成av人片在线看片| 美女被免费视频网站a国产| 一级毛片免费观看不收费| 亚洲国产第一站精品蜜芽| 国产免费不卡视频| 狼人大香伊蕉国产WWW亚洲| 亚洲一级黄色视频| 久久久久久精品免费免费自慰| 亚洲日韩一区二区一无码| 亚洲国产人成精品| 99爱在线观看免费完整版| 亚洲日产乱码一二三区别| 国产亚洲精aa成人网站| 美女视频黄a视频全免费| 老司机午夜性生免费福利 | 亚洲熟妇AV日韩熟妇在线|