Функция сортировки в c ++ делает все элементы в массиве целых чисел 0 - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь отсортировать массив целых чисел в c ++, используя функцию STL sort(), но когда я пытаюсь сортировать, он делает все элементы массива 0.

Это мой код:

#include<bits/stdc++.h>

using namespace std;

const int maxn = 1e5+10;

long long int v[maxn], u[maxn];

int main(){
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++){
        cin >> v[i];
    }
    for(int i = 1; i <= n; i++){
        u[i] = v[i];
        cout << u[i] << ' ';
    }
    cout << '\n';
    int x = sizeof(u) / sizeof(u[1]);
    sort(u, u + x);
    for(int i = 1; i <= n; i++){
        cout << u[i] << ' ';
    }
    return 0;
}

И этот пример ввода и вывода:

ввод:

5
3 5 4 1 2

вывод:

3 5 4 1 2
0 0 0 0 0

Ответы [ 2 ]

1 голос
/ 01 мая 2020

Зачем вам нужен u массив? Вы можете просто использовать v. Используйте std::vector, если вы не уверены в размере.

#include <bits/stdc++.h>

using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> v(n);            // for 1-based indexing, replace n with n + 1
    vector<int> u(n);            // for 1-based indexing, replace n with n + 1
    for(int i = 0; i < n; i++) { // for 1-based indexing, replace with i = 1; i <= n
        cin >> v[i];
        u[i] = v[i];
        cout << u[i] << " ";
    } cout << "\n";

    sort(v.begin(), v.end());    // for 1-based indexing, replace v.begin() with v.begin() + 1

    for(int i = 0; i < n; i++) { // for 1-based indexing, replace with i = 1; i <= n
        cout << v[i] << " ";
    }
    return 0;
}
0 голосов
/ 01 мая 2020

Я думаю, что для l oop должно быть for(int i = 0; i < n; i++), а не for(int i = 1; i <= n; i++) в обоих случаях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...