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

Изменить алгоритм сортировки (вместо сортировки вставками поставить сортировку слиянием Merge) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Одномерные массивы. Вычислить m значений функции f(x) на отрезке [a, b] http://www.cyberforum.ru/cpp-beginners/thread892292.html
a.Вычислить m значений функции f(x) на отрезке . Вычисление величины f(x) с оформить в виде функции. Аргументы и значения функций сохранить в отдельных массивах. b.В массиве значений найти минимальный и максимальный элементы. c.Найти среднее значение элементов массива значений функции, и подсчитать количество элементов больших среднего значения. Функция f(x) 5.2 + 3x – tg(x)/2 a=0.5...
C++ Подсчёт слов в строке и вывод тех, которые встречаются более n раз Всем доброго времени суток. Прошу помощи в решении задачи. Собственно сама задача: Дано осмысленное текстовое сообщение(т.е. алфавитно-цифровая информация, разделённая пробелами и знаками препинания, в конце которого ставится точка.) Вывести только те слова сообщения, которые встречаются в нём более n раз. Проблема моя в том, что я не знаю как организовать пересчёт этих самых слов. и чтобы... http://www.cyberforum.ru/cpp-beginners/thread892291.html
C++ Нужно не много доработать
а как сделать, так чтобы при выводе массива z элементы которые повторяются не выводились, то есть если массив а массив b массив z как то так? // 5.23 Даны значения двух целочисленных массивов x и y размером n. // Рассматривая массивы как конечные множества целых чисел, по- // строить массив z размером не более 2n, где // б) z=x объединение y #include <iostream>...
C++ Создать двухмерный массив 25
заполненный рандомно и вывести на экран
C++ Низкоуровневые функции работы с файлами http://www.cyberforum.ru/cpp-beginners/thread892247.html
Добрый день. Подскажите, пожалуйста, какие есть низкоуровневые функции работы с файлами? спасибо
C++ Как определить размер класса? Здравствуйте! Подскажите, как определить размер класса? sizeof не работает, то есть выдаёт непонятное значение. Класс состоит из нескольких int, float и из двух структур, одна из которых состоит нескольких int, другая - из нескольких string. подробнее

Показать сообщение отдельно
777Super
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 14

Изменить алгоритм сортировки (вместо сортировки вставками поставить сортировку слиянием Merge) - C++

05.06.2013, 18:23. Просмотров 249. Ответов 0
Метки (Все метки)

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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include "stdafx.h"
#include "string.h"
#include "iostream"
#include <fstream>
#include <string>
#include <vector>
#include <istream>
#include "windows.h"
 
using namespace std;
 
 
 
void FileloadBuf(char** fin, vector<int> &num, int* size, short* err)
{
    FILE *f;
    int i,j;
    int q=0;
    char buf[16]="";
    char buf1[32]="";
    char* h;
    char h1[14]="";
    f=fopen(*fin,"r");
    
    if (f==NULL)
    {
        *err=2;
    }
    else
    {
        while (!feof(f))
        {
            memset (buf, 0, sizeof(buf));
            fgets(buf,16,f);
            strcat(buf1,buf);
            h=strtok(buf1," ");
            num.push_back(atoi(h));
//          cout<<num.size()<<endl;
            for (i=0;i<16;i++)
            {
                h=strtok(NULL," ");
                if (h==NULL) break;
                strcpy(h1,"");
                strcat(h1,h);
                num.push_back(atoi(h));
//              cout<<num.size()<<endl;
            }
            memset (buf1, 0, sizeof(buf1));
            if (isdigit(buf[14]))
            {
                num.pop_back();
                strcpy(buf1,h1);
                continue;
            }
        }
    *size=num.size();
    }
    fclose(f);
}
 
void Sort(vector<int> &num, int* size)
{
  int x;
  long i, j;
 
 
 
  // сортировка вставками
  for ( i=0; i < *size; i++) 
    {  
    x = num[i];
        
        for ( j=i-1; j>=0 && num[j] > x; j--)
        num[j+1] = num[j];      
   
    num[j+1] = x;
    } 
  
 }
 
void Obrparam (int argc, char* argv[], char** fin, char** fout)
    {
        int i;
        for (i=1;i<argc;i=i+2)
        {
            if (strcmp(argv[i],"-i")==0)
                {
                    *fin=argv[i+1];
                    continue;
                }
            if (strcmp(argv[i],"-o")==0)
                {
                    *fout=argv[i+1];
                    continue;
                }
        cout << argv[i]<<" invalid";
        }
}
 
void Upload(char** fout, vector<int> &num, int *size)
{
    FILE *f;
    f=fopen(*fout,"w");
    int i;
    for (i=0;i<*size;i++)
    fprintf(f,"%d ",num[i]);
    fclose(f);
}
 
int main(int argc, char* argv[])
{
    
    char *fin=NULL, *fout=NULL;
    int size=0;
    short err=0;
    vector<int> num;
    Obrparam(argc,argv,&fin,&fout);
    FileloadBuf(&fin,num,&size,&err);
    if (err==1)
    {
        cout << "Invalid input data" << endl;
        return 0;
    }
    if (err==2)
    {
        cout << "File with input data not found" << endl;
        return 0;
    }
    int t=GetTickCount();
    Sort(num,&size);
    int t1=GetTickCount();
    int CurrentTime=t1-t;   
    cout << "time " << CurrentTime << " ms" << endl;
    Upload(&fout,num,&size);
    return 0;
}
В этой программе всего лишь мне надо поменять алгоритм сортировки на Merge... Я не знаю как, прошу помощи))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru