一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java 實現最小二叉樹堆排序的實例

java 實現最小二叉樹堆排序的實例

2021-01-08 11:58lynnlysh Java教程

這篇文章主要介紹了java 實現最小二叉樹堆排序的實例的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下

java 實現最小二叉堆排序的實例

寫在前面:

一覺醒來,我就突然有靈感了......

最小二叉堆定義:

二叉堆是完全二元樹或者是近似完全二元樹,最小二叉堆是父結點的鍵值總是小于或等于任何一個子節點的鍵值的堆堆。

存儲:

二叉堆一般用數組來表示。

根節點在數組中的位置是0,第n個位置的子節點分別在2n+1和 2n+2;

位置k的葉子的父節點位置為(k-1)/2;

實現:

?
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
/**
 * @description 元素添加到末尾,和它的父節點比,如果比它小就交換
 * @param array
 *
 * @author LynnWong
 */
private int[] getMinBinaryHeap(int[] array){
  int N = array.length;
  int minBinaryHeap[] = new int[N];
  int root;//根的值
  int heapSize = 0;//記錄插入位置
  for(int num : array){
    minBinaryHeap[heapSize]=num;
    ++heapSize;
    int pointer = heapSize-1;//當前指向的數組元素位置
    while(pointer!=0){
      int leafPointer = pointer;//葉子節點位置
      pointer = (pointer-1)/2;//根節點位置
      root = minBinaryHeap[pointer];//根節點
      if(num>=minBinaryHeap[pointer]){//永遠把當前數組元素看成葉子與其根比較或者換位
        break;
      }//如果根比葉子大 就交換位置
      minBinaryHeap[pointer] = num;
      minBinaryHeap[leafPointer] = root;
       
    }
  }
  return minBinaryHeap;
   
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/***
 * 用隨機數測試二叉堆排序
 * 測試10遍,強迫癥似的變態...
 */
public void text(){
  for(int i=0;i<10;i++){
    Random rnd = new Random(); 
    int [] lala = {rnd.nextInt(6),rnd.nextInt(6),rnd.nextInt(6),rnd.nextInt(6),rnd.nextInt(6),rnd.nextInt(6)};
    System.out.print("輸入:");
    for(int a : lala){
      System.out.print(a+" ");
    }
    System.out.println();
    int []array = this.getMinBinaryHeap(lala);
    System.out.print("輸出:");
    for(int a : array){
      System.out.print(a+" ");
    }
    System.out.println();
  }
}

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://lynnlysh.iteye.com/blog/1767372

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲AV无码专区国产乱码网站 | 5g影院天天影院天天爽影院网站 | 日本免费高清在线观看播放 | 楚乔传第二部免费观看全集完整版 | 四虎国产精品免费久久久 | a男人的天堂久久a毛片 | 欧美破处摘花 | 香蕉成人999视频 | 99在线观看免费视频 | 免费操比视频 | 日日日操 | 校园春色偷拍自拍 | 免费网址视频在线看 | 深夜精品高中女学生 | 国产精品成人一区二区 | 王者荣耀瑶白色液体 | 日本手机在线视频 | 国产乱子伦一区二区三区 | 麻豆视频入口 | 男人好大好硬好爽免费视频 | 色哟哟观看 | sihu国产午夜精品一区二区三区 | 极品在线 | 狠狠色综合久久久久尤物 | 国产欧美日韩综合二区三区 | 国产精品密播放国产免费看 | 亚洲精品乱码蜜桃久久久 | 国产麻豆成91 | 欧美精品日韩一区二区三区 | 出轨同学会2在线观看 | 激情影院费观看 | 毛片小视频 | 高清欧美不卡一区二区三区 | 精品精品国产自在香蕉网 | 高清一区 | 国产精品视频免费一区二区三区 | 国产精品一区二区三区免费视频 | 国产精品区牛牛影院 | 亚洲 综合 欧美在线视频 | 午夜欧美精品久久久久久久 | 成人在线播放 |