本文共 1280 字,大约阅读时间需要 4 分钟。
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 using namespace std;11 12 void Heapfy(int a[], int idx, int max)//堆调整13 {14 int left = idx * 2 + 1;15 int right = left + 1;16 int largest = idx;17 if (left a[largest])// 大于号是升序,小于号是降序18 {19 largest = left;20 }21 if (right < max&&a[right]>a[largest])// 大于号是升序,小于号是降序22 {23 largest = right;24 }25 if (largest != idx)26 {27 int temp = a[largest];28 a[largest] = a[idx];29 a[idx] = temp;30 Heapfy(a, largest, max);31 }32 }33 void buildHeap(int a[], int ll)34 {35 int len = ll;36 for (int i = len / 2 - 1; i >= 0; --i) //第一次,将数据调整为堆37 {38 Heapfy(a, i, len);39 }40 for (int i = len - 1; i >= 1; --i) // 利用堆进行排序41 {42 int temp = a[0];43 a[0] = a[i];44 a[i] = temp;45 Heapfy(a, 0, i);46 }47 }48 int main()49 {50 int a[] = { 1, 5, 8, 6, 6, 48, 23, 0, 4, 0 };51 int n = sizeof(a) / sizeof(a[0]);52 cout << n << endl;53 for (int i = 0; i < n; i++)54 {55 cout << a[i] << " ";56 }57 cout << endl;58 buildHeap(a, n);59 for (int i = 0; i < n; i++)60 {61 cout << a[i] << " ";62 }63 cout << endl;64 65 system("pause");66 return 0;67 }
转载于:https://www.cnblogs.com/wujufengyun/p/6830764.html