- private static void Adjust (int[] list, int i, int m)
- {
- int Temp = list[i];
- int j = i * 2 + 1;
- while (j <= m)
- {
- //more children
- if(j < m)
- if(list[j] < list[j + 1])
- j = j + 1;
- //compare roots and the older children
- if(Temp < list[j])
- {
- list[i] = list[j];
- i = j;
- j = 2 * i + 1;
- }
- else
- {
- j = m + 1;
- }
- }
- list [i] = Temp;
- }
- public static void HeapSort (int[] list)
- {
- //build the initial heap
- for (int i = (list.Length - 1) / 2; i > = 0; i-)
- Adjust (list, i, list.Length - 1);
- //swap root node and the last heap node
- for (int i = list.Length - 1; i > = 1; i-)
- {
- int Temp = list [0];
- list [0] = list [i];
- list [i] = Temp;
- Adjust (list, 0, i - 1);
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/080820135028.html
来源: http://www.codesnippet.cn/detail/080820135028.html