Форум программистов, компьютерный форум, киберфорум
Наши страницы

первое число мусор при сортировке второй функцией - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Мультисписки http://www.cyberforum.ru/cpp-beginners/thread670749.html
Подскажите пожалуйста, как представить разреженную матрицу в виде мультисписков. Хотя бы сам алгоритм. Разряженная матрица - матрица, в которой нулевых эелементов больше, чем ненулевых. Кака...
C++ Проблемы с палиндромом Здравствуйте,у меня вопрос,у заношу переменные в массив A и с номером e почему-то после того как завершает заносит в e хранится число на две единицы больше которое должно быть например ввёл 4-е буквы... http://www.cyberforum.ru/cpp-beginners/thread670739.html
Определить в предложении слова максимальной и минимальной длины и поменять их местами. C C++
Доброе время суток!:) Уважаемы программисты, помогите, пожалуйста решить задачу: Дана строка предложение. Определить в предложении слова максимальной и минимальной длины и поменять их местами....
разобрать двумерный массив по функциям C++
Помогите разобрать двумерный массив по функциям #include "stdafx.h" #include <iostream>//библиотека #include <ctime>//для времени using namespace std; #include <conio.h>// для getch #include...
C++ Программа ввода иформации о маршрутном такси http://www.cyberforum.ru/cpp-beginners/thread670721.html
Написать программу ввода информации о маршрутном такси(номер,стоимость,вид транспорта), где стоимость может быть как целочисленным значением, так и вещественным. Написать программу удаления...
C++ Передача ф-ции как параметра другой ф-ции struct pupil{ char surname; int school; int answer; int num; } tmp, a; int usl(int i, pupil a) { } подробнее

Показать сообщение отдельно
artproo
0 / 0 / 0
Регистрация: 11.01.2012
Сообщений: 18

первое число мусор при сортировке второй функцией - C++

14.10.2012, 13:23. Просмотров 273. Ответов 1
Метки (Все метки)

Доброго времени, народ! не могу разобраться с корректной работой второго метода сортировки, в массиве первое чисто мусоор!откуда берется?и как убрать?
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#include <iostream>
#include <fstream>
#include <time.h>
using namespace std;
void sort_in(int *A,int N,int &sr, int &per)
{
    int i, j;
    int x;
    for (i=1;i<N;i++)
    {
        x=A[i];
        for (j=i-1; (j>=0) && (A[j]>x); j-- )
        A[j+1]=A[j];
        A[j+1]=x;
    }
    return;
}
 
void quick(int *A, int N)  //быстрая сортировка, возможно не учтены аргументы
{   int i=0, j=N;
    int temp, p;
 
    p = A[ N>>1 ];      // центральный элемент
 
  // процедура разделения
  do {
    while ( A[i] < p ) i++;
    while ( A[j] > p ) j--;
 
    if (i <= j) {
      temp = A[i]; A[i] = A[j]; A[j] = temp;
      i++; j--;
    }
  } while ( i<=j );
 
 
  // рекурсивные вызовы, если есть, что сортировать 
  if ( j > 0 ) quick(A, j);
  if ( N > i ) quick(A+i, N-i);
    
    return;
}
 
int main (void)
{
    ofstream fout ("result.txt",ios::out);
    int rezhim;
    int N,up,s;
    int *A,i;
    int sr,per;
    int t;
    int sp;
    srand ((unsigned)time(NULL));
    setlocale (NULL,"rus");
    rezhim=9;
    int step;
    while (rezhim)
    {
        system("cls");
        cout<<"Выберите режим: \n";
        cout<<"1. Сортировка одного массива\n";
        cout<<"2. Обработка статистических данных\n";
        cout<<"0. Выход\n";
        cin>>rezhim;
        if (rezhim==1)
        {
            cout<<"Введите размер массива: ";
            cin>>N;
            cout<<"Введите диапазон случайных значений: ";
            cin>>up;
            cout<<"Выберите режим сортировки: \n";
            cout<<"1. Сортировка простым выбором\n";
            cout<<"2. Быстрая сортировка\n";
            cin>>s;
            A=new int [N];
            for (i=0;i<N;i++)
                A[i]=rand()%up;
            t=clock();
            if (s==1)
                sort_in(A,N,sr,per);
            else
                quick(A,N);
            t-=clock();
            t=-t;
            for (i=0;i<N;i++)
                fout<<A[i]<<" ";
            fout<<endl;
            fout<<"Размер массива: "<<N<<endl;
            fout<<"Заданный диапозон: "<<up<<endl;
            fout<<"time: "<<t<<endl;
        }
        else if (rezhim==2)
        {
            cout<<"Введите способ формирования элементов: \n";
            cout<<"1. Случайно\n";
            cout<<"2. По возрастанию\n";
            cout<<"3. По убыванию\n";
            cin>>sp;
            cout<<"Задайте диапазон и шаг изменения размеров: ";
            cin>>up>>step;
            cout<<"Выберите режим сортировки: \n";
            cout<<"1. Сортировка простым выбором\n";
            cout<<"2. Быстрая сортировка\n";
            cin>>s;
            if (s==1)
                fout<<"Сортировка простым выбором!\n";
            else
                fout<<"Быстрая сортировка!\n";
            for (N=step;N<=up;N+=step)
            {
                A=new int [N];
                switch (sp)
                {
                case 1:
                    for (i=0;i<N;i++)
                        A[i]=rand()%up;
                    t=clock();
                    if (s==1)
                        sort_in(A,N,sr,per);
                    else
                        quick(A,N);
                    t-=clock();
                    t=-t;
                    fout<<"kol: "<<N<<", time: "<<t<<endl;
                    break;
                case 2:
                    for (i=0;i<N;i++)
                        A[i]=i+1;
                    t=clock();
                    if (s==1)
                        sort_in(A,N,sr,per);
                    else
                        quick(A,N);
                    t-=clock();
                    t=-t;
                    fout<<"kol: "<<N<<", time: "<<t<<endl;
                    break;
                default:
                    for (i=0;i<N;i++)
                        A[i]=N+1-i;
                    t=clock();
                    if (s==1)
                        sort_in(A,N,sr,per);
                    else
                        quick(A,N);
                    t-=clock();
                    t=-t;
                    fout<<"kol: "<<N<<", time: "<<t<<endl;
                }
            }
        }
    }
    
    /////////
    //delete []A;
    //A=0;
 
    delete []A;
    A=0;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru