Форум программистов, компьютерный форум CyberForum.ru

Подскажите что не в моем коде(Сортировка слиянием) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Препроцессорная обработка http://www.cyberforum.ru/cpp-beginners/thread539417.html
Столкнулась с пока непреодолимой для меня задачей, кто знает как такое решить, помогите новичку, буду очень благодарна:cry: :) постановка задачи: Написать программу, которая: • Выводит текст на экран дисплея; • Определяет порядковый номер заданного слова в каждом предложении текста и записывает в файл; По нажатию произвольной клавиши поочередно выделяет каждое предложение текста, а в...
C++ Скриншот раб стола + видео Как сделать скриншот рабочего стола и чтоб видео на нем было б изображено черным квадратом? http://www.cyberforum.ru/cpp-beginners/thread539411.html
C++ Ребята подкажи что за библиотека...atlimage.h
Дайте определение или какие функции выполняет atlimage.h
C++ Шаблон класса.
Приведите пожалуйста пример какого нибудь простого класса с меню. Чтобы пользователь сам вводил, а не компьютер заполнял.
C++ Объединение нескольких массивов в одну область памяти Union и прямое обращение по имени http://www.cyberforum.ru/cpp-beginners/thread539406.html
Нужно чтобы массив s пересекался в памяти с массивами u1,u2,u3 и чтобы к ним был прямой доступ по имени. Первое я реализовал: union ons { char s; struct ghs { char u1; char u2; char u3; } x; } w; Но в данном случае для доступа к массивам нужна нужно обращаться так:
C++ Рекурсивная процедура вычисления n-го числа Фибоначчи Добрый день. Подскажите, пожалуйста, алгоритм рекурсивной процедуры вычисления n-го числа Фибоначчи. Только начал изучать процедуры и рекурсии, поэтому задача вызвала затруднения. подробнее

Показать сообщение отдельно
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
05.04.2012, 04:23     Подскажите что не в моем коде(Сортировка слиянием)
Цитата Сообщение от ShookTrooper Посмотреть сообщение
for (char i=0; i<size;i++)
* a[i]=array[i]
i не char,а int,как вы вообще представляете себе работу этого цикла
Цитата Сообщение от ShookTrooper Посмотреть сообщение
int imax=sizeof(a)/4;
* int jmax=sizeof(b)/4
тут нужно было написать sizeof(имя_массива)/sizeof(T),где Т - тип переменной в массиве

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<vector>//MergeSort.h
using std::vector;
 
class MergeSort
{
public:
    MergeSort(int);
    void sort();
private:
    int size;
    vector<int> data;
    void sortSubVector(int,int);
    void merge(int,int,int,int);
};
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
66
67
68
69
70
71
72
73
74
75
76
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
 
#include<cstdlib>
using std::rand;
using std::srand;
 
#include<ctime>
using std::time;
 
#include<vector>
using std::vector;
 
#include "MergeSort.h"
 
MergeSort::MergeSort(int vectorSize)
{
    size = (vectorSize > 0 ? vectorSize : 10);
    srand(time(0));
 
    for(int i = 0;i < size;i++)
        data.push_back(10 + rand()%90);
}
 
void MergeSort::sort()
{
    sortSubVector(0,size-1);
}
 
void MergeSort::sortSubVector(int low,int high)
{
    if((high - low) >= 1)
    {
        int middle1 = (low + high)/2;
        int middle2 = middle1 + 1;
 
        sortSubVector(low,middle1);
        sortSubVector(middle2,high);
 
        merge(low,middle1,middle2,high);
    }
}
 
void MergeSort::merge(int left,int middle1,int middle2,int right)
{
    int leftIndex = left;
    int rightIndex = middle2;
    int combinedIndex = left;
    vector<int> combined(size);
 
 
    while(leftIndex <= middle1 && rightIndex <= right)
    {
        if(data[leftIndex] <= data[rightIndex])
            combined[combinedIndex++] = data[leftIndex++];
        else
            combined[combinedIndex++] = data[rightIndex++];
    }
 
    if(leftIndex == middle2)
    {
    while(rightIndex <= right)
        combined[combinedIndex++] = data[rightIndex++];
    }
    else
    {
        while(leftIndex <= middle1)
        combined[combinedIndex++] = data[leftIndex++];
    }
 
    for(int i = left;i <= right;i++)
        data[i] = combined[i];
 
    cout <<endl;
 
Текущее время: 12:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru