1
using System;
2
using System.Collections.Generic;
3
using System.Text;
4![]()
5
namespace HeapSort
6
{
7
class Program
8
{
9
static void Main(string[] args)
10
{
11
//arr[0]
12
int[] arr = new int[] { 0,1,6,2,5,3,432,432,44,3,65,76,879,3,54,54543,33333333,33,2,4};
13
HeapSort sort = new HeapSort(arr);
14
sort.Sort();
15
Console.ReadLine();
16
}
17
}
18![]()
19
class HeapSort
20
{
21
public int[] arr;
22
public int length;
23![]()
24
public HeapSort(int[] arr)
25
{
26
this.arr = arr;
27
this.length = this.arr.Length-1;
28
}
29![]()
30
public void HeapAdjust( int low, int high )
31
{
32
int rc = arr[low];
33![]()
34
for (int i = 2*low; i <= high; i *= 2)
35
{
36
if (i<high && arr[i] < arr[i + 1]) i++;
37
if (arr[i] < rc) break;
38
arr[low] = arr[i];
39
low = i;
40
}
41![]()
42
arr[low] = rc;
43
}
44![]()
45
public void Sort()
46
{
47
for (int i = length / 2; i >= 1; i--)
48
{
49
HeapAdjust(i, length);
50
}
51![]()
52
for (int i = length; i > 1; i--)
53
{
54
int temp = arr[1];
55
arr[1] = arr[i];
56
arr[i] = temp;
57![]()
58
HeapAdjust(1, i - 1);
59
}
60![]()
61
for (int i = 1; i <= length; i++)
62
{
63
Console.Write(arr[i] + " ");
64
}
65
Console.WriteLine();
66
}
67![]()
68
}
69
}
70![]()
using System;2
using System.Collections.Generic;3
using System.Text;4

5
namespace HeapSort6
{7
class Program8
{9
static void Main(string[] args)10
{11
//arr[0]12
int[] arr = new int[] { 0,1,6,2,5,3,432,432,44,3,65,76,879,3,54,54543,33333333,33,2,4};13
HeapSort sort = new HeapSort(arr);14
sort.Sort();15
Console.ReadLine();16
}17
}18

19
class HeapSort20
{21
public int[] arr;22
public int length;23

24
public HeapSort(int[] arr)25
{26
this.arr = arr;27
this.length = this.arr.Length-1;28
}29

30
public void HeapAdjust( int low, int high )31
{32
int rc = arr[low];33

34
for (int i = 2*low; i <= high; i *= 2)35
{36
if (i<high && arr[i] < arr[i + 1]) i++;37
if (arr[i] < rc) break;38
arr[low] = arr[i]; 39
low = i; 40
}41

42
arr[low] = rc;43
}44

45
public void Sort()46
{47
for (int i = length / 2; i >= 1; i--)48
{49
HeapAdjust(i, length);50
}51

52
for (int i = length; i > 1; i--)53
{ 54
int temp = arr[1];55
arr[1] = arr[i];56
arr[i] = temp;57

58
HeapAdjust(1, i - 1);59
}60

61
for (int i = 1; i <= length; i++)62
{63
Console.Write(arr[i] + " ");64
}65
Console.WriteLine();66
}67

68
}69
}70



浙公网安备 33010602011771号