[C#] C#堆排序代码 →→→→→进入此内容的聊天室

来自 , 2019-11-08, 写在 C#, 查看 100 次.
URL http://www.code666.cn/view/0c7119e3
  1. private static void Adjust (int[] list, int i, int m)
  2. {
  3.     int Temp = list[i];
  4.     int j = i * 2 + 1;
  5.  
  6.     while (j <= m)
  7.     {
  8.         //more children
  9.         if(j < m)
  10.             if(list[j] < list[j + 1])
  11.                 j = j + 1;
  12.  
  13.         //compare roots and the older children
  14.         if(Temp < list[j])
  15.         {
  16.             list[i] = list[j];
  17.             i = j;
  18.             j = 2 * i + 1;
  19.         }
  20.         else
  21.         {
  22.             j = m + 1;
  23.         }
  24.     }
  25.  
  26.     list [i] = Temp;
  27. }
  28. public static void HeapSort (int[] list)
  29. {
  30.     //build the initial heap
  31.     for (int i = (list.Length - 1) / 2; i > = 0; i-)
  32.         Adjust (list, i, list.Length - 1);
  33.  
  34.     //swap root node and the last heap node
  35.     for (int i = list.Length - 1; i > = 1; i-)
  36.     {
  37.         int Temp = list [0];
  38.         list [0] = list [i];
  39.         list [i] = Temp;
  40.         Adjust (list, 0, i - 1);
  41.     }
  42. }
  43. //csharp/7786

回复 "C#堆排序代码"

这儿你可以回复上面这条便签

captcha