堆排序
void heapify(vector<int> &arr, int n, int i) { int largest = i; int lson = 2 * i + 1; int rson = 2 * i +2; if (lson < n && arr[lson] > arr[largest]) { largest = lson; } if (rson < n && arr[rson] > arr[largest]) { largest = rson; } if (largest != i) { swap(&arr[largest], &arr[i]); heapify(arr, n, largest); } } void heapSort(vector<int> &arr) { int i; for (i = arr.size() / 2 - 1; i>=0; i--) { heapify(arr, arr.size(), i); } for (i = arr.size() - 1; i > 0; i--) { swap(&arr[0], &arr[i]); heapify(arr, i, 0); } }