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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
777Super
0 / 0 / 0
Регистрация: 17.10.2012
Сообщений: 14
#1

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

05.06.2013, 18:23. Просмотров 251. Ответов 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... Я не знаю как, прошу помощи))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2013, 18:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Изменить алгоритм сортировки (вместо сортировки вставками поставить сортировку слиянием Merge) (C++):

Алгоритм сортировки In-place merge sort - C++
Для здачи лабораторной нужно написать алгоритм сортировки vector и массивов любых типов данных(как пользовательских так и стандартных),...

Алгоритм сортировки вставками - C++
Привет, всем! В алгоритме непонятна одна строчка: #include&lt;iostream&gt; #include&lt;cstdlib&gt; using namespace std; int...

Ассемблерные вставки в C++. Алгоритм сортировки слиянием - C++
Нужна помощь.Необходимо реализовать алгоритм сортировки слиянием по возрастанию из элементов массивов, отсортированный по убыванию. Пишу в...

Алгоритм сортировки слиянием. Исправить ошибки в коде - C++
#include &lt;iostream&gt; #include &lt;time.h&gt; void merge(int array, int left, int right, int n) { int middle, start1, start2, j; ...

Реализуйте алгоритм сортировки слиянием применительно к односвязным спискам - C++
Реализуйте алгоритм сортировки слиянием применительно к односвязным спискам. Основные шаги алгоритма должна быть идентичным сортировке...

Сортировку вставками меняем на сортировку слиянием - C++
Код программы выполняет сортировку массива вставками. Как сюда вставить код сортировки массива методом слияния, вместо метода вставками,что...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2013, 18:23
Привет! Вот еще темы с ответами:

Изменить метод "быстрой сортировки" на метод "сортировки вставками" - C++
Как изменить метод &quot;интеративной быстрой сортировки&quot; на метод &quot;сортировки вставками «с конца массива»&quot;? Нужно изменить только метод...

Что нужно изменить чтобы при подсчете количества обменов программа подсчитывала не один алгоритм сортировки - C++
#include &lt;stdio.h&gt; //Подключение заголовочного файла библиотеки ввода/вывода #include &lt;locale.h&gt; //Подключение заголовочного файла...

Реализация сортировки вставками - C++
На algolist нашёл исходник (вопросы после исходников): template&lt;class T&gt; void selectSort(T a, long size) { long i, j, k; ...

Реализация алгоритма сортировки вставками - C++
Мне нужно сделать лабу тема вверху... перед этим прочитал тему http://www.cyberforum.ru/cpp-beginners/thread27084.html все равно не...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru