intmain(){ int n, m, j; cin >> n >> m; int* arr = newint[m] {0}; cin >> arr[0]; for (int i = 1; i < m; ++i) { int tmp; cin >> tmp; j = i - 1; while (1) { if (arr[j] < tmp || j < 0) { arr[j + 1] = tmp; break; } else arr[j + 1] = arr[j]; --j; } } for (int i = 0; i < m; ++i) cout << arr[i] << ' '; delete[] arr; return0; }
intdivide(int* arr, int left, int right){ int pivot = arr[left]; while (left < right) { while (arr[right] > pivot && left < right) --right; if (left < right) arr[left] = arr[right]; while (arr[left] <= pivot && left < right) ++left; if (left < right) arr[right] = arr[left]; } arr[left] = pivot; return left; }
voidquickSort(int* arr, int left, int right){ if (left >= right) return; int mid = divide(arr, left, right); quickSort(arr, left, mid - 1); quickSort(arr, mid + 1, right); }
intmain(){ int n, m; cin >> n >> m; int* arr = newint[m] {0}; for (int i = 0; i < m; ++i) cin >> arr[i]; quickSort(arr, 0, m - 1); for (int i = 0; i < m; ++i) cout << arr[i] << ' '; delete[] arr; return0; }
// 大顶堆向下过滤 voidpercolateDown(int* arr, int idx, int size){ int next = 2 * idx + 1, tmp = arr[idx]; while (1) { if (next + 1 < size && arr[next] < arr[next + 1]) ++next; if (next >= size || tmp >= arr[next]) { arr[idx] = tmp; break; } arr[idx] = arr[next]; idx = next; next = 2 * idx + 1; } }
voidheapSort(int* arr, int size){ for (int i = (size - 1) / 2; i >= 0; --i) percolateDown(arr, i, size); for (int i = 0; i < size - 1; ++i) { int tmp = arr[0]; arr[0] = arr[size - i - 1]; arr[size - i - 1] = tmp; percolateDown(arr, 0, size - i - 1); } }
intmain(){ int n, m; cin >> n >> m; int* arr = newint[m] {0}; for (int i = 0; i < m; ++i) cin >> arr[i]; heapSort(arr, m); for (int i = 0; i < m; ++i) cout << arr[i] << ' '; delete[] arr; return0; }