Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <locale.h>
- #include <vector>
- using namespace std;
- void surface(vector<int>& v, int i, int k) {
- int j, m, copy;
- copy = v[i - 1];
- m = 2 * i;
- while (m <= k) {
- if (m == k) j = m;
- else if (v[m - 1] > v[m]) j = m;
- else j = m + 1;
- if (v[j - 1] > copy) {
- v[i - 1] = v[j - 1];
- i = j;
- m = 2 * i;
- }
- else break;
- }
- v[i - 1] = copy;
- }
- void floid_sort(vector<int>& v) {
- for (int i = v.size() / 2; i >= 2; --i) surface(v, i, v.size());
- for (int i = v.size(); i >= 2; --i) {
- surface(v, 1, i);
- swap(v[i - 1], v[0]);
- }
- }
- int main() {
- setlocale(LC_ALL, "Russian");
- int n;
- cout << "Введите длину массива: ";
- cin >> n;
- cout << "Введите массив: ";
- vector<int> v(n);
- for (auto& x : v) cin >> x;
- floid_sort(v);
- for (auto& x : v) cout << x << " ";
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement