Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 04.05.2013
Сообщений: 7

Сортировка слиянием. Количество инверсий

14.05.2013, 18:14. Показов 4437. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно посчитать количество инверсий в последовательности. При больших значениях ~90 - 100 тысяч программа выдает непонятное отрицательно число. Где ошибка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <stdio.h>
#include <iostream>
#include <vector>
 
using namespace std;
 
int n;
int tmp = 0;
vector<int> mas;
int merge(vector<int> &mas, int l, int m, int r)
{
    int per = 0;
    vector<int> buffer(r - l + 1);
    int pos1 = l;
    int pos2 = m+1;
    int posB = 0;
 
    while(pos1 <=m && pos2<=r)
    {
        if(mas[pos1] < mas[pos2])
            buffer[posB++] = mas[pos1++];
        else
        {
            buffer[posB++] = mas[pos2++];
            per += m - pos1 + 1;
        }
    }
 
    while (pos1 <=m)
        buffer[posB++] = mas[pos1++];
    while (pos2 <=r)
        buffer[posB++] = mas[pos2++];
    copy(buffer.begin(), buffer.end(), mas.begin()+l);
    return per;
 
}
int merge_sort(vector<int> & mas, int l, int r)
{
    int per = 0;
    if(l == r)
        return per;
    int m = (l + r)/2;
    per +=merge_sort(mas, l,m);
    per +=merge_sort(mas, m+1,r);
    per += merge(mas, l, m, r);
    return per;
}
void input()
{
    cin>>n;
    mas.resize(n);
        for (int j=0;j<n;j++)
            scanf("%d",&mas[j]);
      int per= merge_sort(mas,0,n-1);     
            tmp = per;
}
void output()
{
    printf("%d\n", tmp);
}
int main()
{
    input();
    output();
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2013, 18:14
Ответы с готовыми решениями:

Сортировка слиянием: подсчитать количество перестановок
Привет всем. Дана задача: подсчитать количество перестановок при сортировке массива. Нужен быстрый алгоритм, желательно алгоритм сортировки...

[Сортировка слиянием] Уменьшить количество требуемой памяти для сортировки
Добрый, на момент написания, день всем. Изучаю алгоритмы данных, дошёл до сортировки слиянием (Merge Sort). Прочитал, что для...

Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом?
Помогите, пожалуйста, разобраться. Подскажите в каком куске кода происходит сортировка и каким именно образом? #include &lt;iostream&gt; ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.05.2013, 18:14
Помогаю со студенческими работами здесь

Сортировка Слиянием vs Быстрая Сортировка - что лучше
Народ, помогите разобраться какой из методов сортировки лучше &quot;Сортировка Слиянием&quot; или &quot;Быстрая Сортировка&quot;: у быстрой...

2 сортировки: пирамидальная сортировка и сортировка слиянием
Реализовать два улучшенных алгоритма сортировки. Для каждого алгоритма вычислить показатель качества сортировки (количество операций, т.е....

Определить количество инверсий в последовательности
Одномерные массивы Дана последовательность из n целых чисел. Определить количество инверсий в этой последовательности (т.е. таких пар...

Определить количество инверсий в массиве
определить количество инверсий в массиве Х т.е таких пар элементов, в которых большее число находится слева от меньшего:Xi&gt;Xj при i&lt;j.

Определить количество инверсий в массиве
Одна из лаб: - Задан массив из k чисел. Определить количество инверсий в массиве (т. е. таких пар элементов, в которых большее число...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru