#includeusing namespace std; void adjust(vector & a, int i, int n) { int left = i * 2 + 1; int right = i * 2 + 2; int max = i; if (left < n && a[left]>a[max]) max = left; if (right < n && a[right]>a[max]) max = right; if (max != i) { swap(a[max], a[i]); adjust(a, max, n); } return; } void duipaixu(vector & a, int n) { for (int i = (n - 1) / 2; i > 0; i--) { adjust(a, i, n); } for (int i = 0; i < n; i++) { swap(a[i], a[n - i]); adjust(a, i, n - 1 - i); } return; } int main() { int n; cin >> n; vector a(n); for (int i = 0; i < n; i++) cin >> a[i]; sort(a.begin(),a.end()); for (auto c : a) cout << c << " "; cout << endl; return 0; }
数据结构复习



