最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#排序算法之堆排序

 更新時(shí)間:2020年01月30日 10:00:17   作者:mlovelcottage  
這篇文章主要為大家詳細(xì)介紹了C#排序算法之堆排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C#實(shí)現(xiàn)堆排序的具體代碼,供大家參考,具體內(nèi)容如下

代碼:

/// <summary> 
  /// 堆排序方法。 
  /// </summary> 
  /// <param name="a"> 
  /// 待排序數(shù)組。 
  /// </param> 
  private void Heapsort(int[] a)
  {
   HeapSort_BuildMaxHeap(a); // 建立大根堆。 
   Console.WriteLine("Build max heap:");
   foreach (int i in a)
   {
    Console.Write(i + " "); // 打印大根堆。 
   }
 
   Console.WriteLine("\r\nMax heap in each iteration:");
   for (int i = a.Length - 1; i > 0; i--)
   {
    HeapSort_Swap(ref a[0], ref a[i]); // 將堆頂元素和無(wú)序區(qū)的最后一個(gè)元素交換。 
    HeapSort_MaxHeaping(a, 0, i); // 將新的無(wú)序區(qū)調(diào)整為大根堆。 
 
    // 打印每一次堆排序迭代后的大根堆。 
    for (int j = 0; j < i; j++)
    {
     Console.Write(a[j] + " ");
    }
 
    Console.WriteLine(string.Empty);
   }
  }
 
  /// <summary> 
  /// 由底向上建堆。由完全二叉樹(shù)的性質(zhì)可知,葉子結(jié)點(diǎn)是從index=a.Length/2開(kāi)始,所以從index=(a.Length/2)-1結(jié)點(diǎn)開(kāi)始由底向上進(jìn)行大根堆的調(diào)整。 
  /// </summary> 
  /// <param name="a"> 
  /// 待排序數(shù)組。 
  /// </param> 
  private static void HeapSort_BuildMaxHeap(int[] a)
  {
   for (int i = (a.Length / 2) - 1; i >= 0; i--)
   {
    HeapSort_MaxHeaping(a, i, a.Length);
   }
  }
 
  /// <summary> 
  /// 將指定的結(jié)點(diǎn)調(diào)整為堆。 
  /// </summary> 
  /// <param name="a"> 
  /// 待排序數(shù)組。 
  /// </param> 
  /// <param name="i"> 
  /// 需要調(diào)整的結(jié)點(diǎn)。 
  /// </param> 
  /// <param name="heapSize"> 
  /// 堆的大小,也指數(shù)組中無(wú)序區(qū)的長(zhǎng)度。 
  /// </param> 
  private static void HeapSort_MaxHeaping(int[] a, int i, int heapSize)
  {
   int left = (2 * i) + 1; // 左子結(jié)點(diǎn)。 
   int right = 2 * (i + 1); // 右子結(jié)點(diǎn)。 
   int large = i; // 臨時(shí)變量,存放大的結(jié)點(diǎn)值。 
 
   // 比較左子結(jié)點(diǎn)。 
   if (left < heapSize && a[left] > a[large])
   {
    large = left;
   }
 
   // 比較右子結(jié)點(diǎn)。 
   if (right < heapSize && a[right] > a[large])
   {
    large = right;
   }
 
   // 如有子結(jié)點(diǎn)大于自身就交換,使大的元素上移;并且把該大的元素調(diào)整為堆以保證堆的性質(zhì)。 
   if (i != large)
   {
    HeapSort_Swap(ref a[i], ref a[large]);
    HeapSort_MaxHeaping(a, large, heapSize);
   }
  }
 
  /// <summary> 
  /// 交換兩個(gè)整數(shù)的值。 
  /// </summary> 
  /// <param name="a">整數(shù)a。</param> 
  /// <param name="b">整數(shù)b。</param> 
  private static void HeapSort_Swap(ref int a, ref int b)
  {
   int tmp = a;
   a = b;
   b = tmp;
  }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#與PLC通訊的實(shí)現(xiàn)代碼

    C#與PLC通訊的實(shí)現(xiàn)代碼

    這篇文章主要介紹了C#與PLC通訊的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • C# FileStream復(fù)制大文件

    C# FileStream復(fù)制大文件

    這篇文章主要為大家詳細(xì)介紹了C# FileStream復(fù)制大文件的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 通過(guò)C#編寫(xiě)一個(gè)簡(jiǎn)易的Windows截屏增強(qiáng)工具

    通過(guò)C#編寫(xiě)一個(gè)簡(jiǎn)易的Windows截屏增強(qiáng)工具

    在使用?Windows?系統(tǒng)的截屏快捷鍵?PrintScreen?截屏?xí)r,如果需要把截屏保存到文件,需要先粘貼到畫(huà)圖工具然后另存為文件。所以本文用C#編寫(xiě)了一個(gè)簡(jiǎn)易的Windows截屏增強(qiáng)工具,需要的可以參考一下
    2022-05-05
  • 使用C#開(kāi)源文件實(shí)時(shí)監(jiān)控工具Tail&TailUI介紹

    使用C#開(kāi)源文件實(shí)時(shí)監(jiān)控工具Tail&TailUI介紹

    本篇文章小編為大家介紹,使用C#開(kāi)源文件實(shí)時(shí)監(jiān)控工具Tail&TailUI介紹。需要的朋友參考下
    2013-04-04
  • C#中深拷貝和淺拷貝的介紹與用法

    C#中深拷貝和淺拷貝的介紹與用法

    本文詳細(xì)講解了C#中深拷貝和淺拷貝的介紹與用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Unity工具類ScrollView實(shí)現(xiàn)拖拽滑動(dòng)翻頁(yè)

    Unity工具類ScrollView實(shí)現(xiàn)拖拽滑動(dòng)翻頁(yè)

    這篇文章主要為大家詳細(xì)介紹了Unity工具類ScrollView實(shí)現(xiàn)拖拽滑動(dòng)翻頁(yè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 基于C#生成條形碼操作知識(shí)匯總附源碼下載

    基于C#生成條形碼操作知識(shí)匯總附源碼下載

    這篇文章主要介紹了基于C#生成條形碼操作知識(shí)匯總的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • C# Winform多屏幕多顯示器編程技巧實(shí)例

    C# Winform多屏幕多顯示器編程技巧實(shí)例

    這篇文章主要介紹了C# Winform多屏幕多顯示器編程技巧實(shí)例,本文直接給出代碼實(shí)例,需要的朋友可以參考下
    2015-06-06
  • C#直線的最小二乘法線性回歸運(yùn)算實(shí)例

    C#直線的最小二乘法線性回歸運(yùn)算實(shí)例

    這篇文章主要介紹了C#直線的最小二乘法線性回歸運(yùn)算方法,實(shí)例分析了給定一組點(diǎn),用最小二乘法進(jìn)行線性回歸運(yùn)算的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • 如何獲取C#中方法的執(zhí)行時(shí)間以及其代碼注入詳解

    如何獲取C#中方法的執(zhí)行時(shí)間以及其代碼注入詳解

    這篇文章主要給大家介紹了關(guān)于如何獲取C#中方法的執(zhí)行時(shí)間以及其代碼注入的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧
    2018-11-11

最新評(píng)論

喀喇沁旗| 凤山市| 烟台市| 泗水县| 姚安县| 东丽区| 泗洪县| 舞阳县| 桂林市| 筠连县| 萨迦县| 北川| 永康市| 五大连池市| 丽江市| 泗洪县| 滦平县| 依兰县| 峨山| 红桥区| 思南县| 青河县| 佛学| 开远市| 铜川市| 肥城市| 精河县| 广南县| 瑞金市| 临潭县| 尼勒克县| 沙坪坝区| 峨眉山市| 六枝特区| 呼图壁县| 上饶县| 方正县| 桃江县| 原阳县| 海南省| 龙胜|