激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

服務器之家 - 編程語言 - Java教程 - java堆排序概念原理介紹

java堆排序概念原理介紹

2021-06-07 13:58Java教程網 Java教程

在本篇文章里我們給大家分享了關于java堆排序的概念原理相關知識點內容,有需要的朋友們可以學習下。

堆排序介紹:

堆排序可以分為兩個階段。在堆的構造階段,我們將原始數組重新組織安排進一個堆中;然后在下沉排序階段,我們從堆中按順序取出所有元素并得到排序結果。

1.堆的構造,一個有效的方法是從右到左使用sink()下沉函數構造子堆。數組的每個位置都有一個子堆的根節點,sink()對于這些子堆也適用,如果一個節點的兩個子節點都已經是堆了,那么在該節點上調用sink()方法可以把他們合并成一個堆。我們可以跳過大小為1的子堆,因為大小為1的不需要sink()也就是下沉操作,有關下沉和上浮操作可以參考我寫的優先隊列那篇。

2.堆的排序,我們通過第一步操作構造了一個堆,在這個堆中,根節點永遠是最大值的節點,所以我們把根節點的值與數組最后的值進行交換,在使用sink()下沉來維護堆的結構即可。

具體代碼實現:

java" id="highlighter_120917">
?
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
31
32
33
34
35
36
37
38
public class pqsort{
  public static void main(string[] args){
    int[] a = {9,1,7,5,3,9,12,56,21,45};
    sort(a);
    for(int i=0;i<a.length;i++) {
      system.out.print(a[i]+" ");
    
  }
  //排序方法
  public static void sort(int[] a){
      int n = a.length-1;
      //通過下沉操作構造堆,因為下標從0開始,所以子節點為2*k+1和2*k+2;
      for(int k = (n-2)/2;k>=0;k--){
        sink(a,k,n);
      }
      //通過不斷把堆中最大值放到數組的后面來排序
      while(n>0){
        exch(a,0,n--);
        sink(a,0,n);
      }
  }
  //下沉函數
  private static void sink(int[] a, int i, int n){
    while(2*i+1<=n){
      int j = 2*i+1;
      if(j<n&&a[j]<a[j+1]) j++;
      if(a[i]>a[j]) break;
      exch(a,i,j);
      i=j;
    }
  }
  //交換函數
  private static void exch(int[] a, int i, int j){
    int temp = a[i];
    a[i] = a[j];
    a[j] = temp;
  }
}

運行結果:

java堆排序概念原理介紹

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲午夜视频在线 | av在线免费观看网 | 欧日韩在线 | 国产精品99久久久久久大便 | 欧美a级在线免费观看 | 欧美激情性色生活片在线观看 | 色戒在线版 | 少妇一级淫片高潮流水电影 | 护士hd欧美free性xxxx | 国产午夜亚洲精品理论片大丰影院 | 中文字幕国产日韩 | 中文字幕综合在线观看 | 国产一区毛片 | 99精品国产小情侣高潮露脸在线 | 欧美日韩中文字幕在线 | 国产女同疯狂激烈互摸 | 666sao| 热99精品视频 | 视频www | 欧美一级特级 | 黄色网电影 | 黄色一级毛片免费看 | 亚洲一区二区三区视频免费 | 九九热在线视频免费观看 | 黄色影院av | 91高清完整版在线观看 | 最新在线黄色网址 | 草草视频免费观看 | 一级网站| 久草资源在线观看 | 黄网站在线观 | 夜添久久精品亚洲国产精品 | 香蕉视频99| 一级大黄毛片 | 国产午夜精品久久久久久免费视 | 精国产品一区二区三区 | 模特三级在线观看 | 久久九九热re6这里有精品 | 一级做a爰性色毛片免费 | 精品亚洲视频在线 | 欧美久久一区 |