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

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

Войти
Регистрация
Восстановить пароль
 
Belek
6 / 6 / 0
Регистрация: 15.12.2010
Сообщений: 200
#1

устранить ошибки - C++

08.01.2011, 04:53. Просмотров 449. Ответов 5
Метки нет (Все метки)

Привет! Я уже обращался с подобной просьбой, но остался без ответа. помогите пожалуйста. срочно надо!
задача такова что нужно написать программу которая сортирует массивы из 1000, 5000 и 10000 элементов двумя видами сортировок и ввыводит время для каждой сортировки каждого массива.
вот код, но тут у меня выходит что сортировка пузырька сортирует массив из 1000 элементов быстрее чем сортировка втсавкой! пожалуйста помогите!

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
#include <iostream.h>
#include <time.h>
#include <fstream.h>
#include <stdlib.h>
 
void BUBBLE(int array[], int size)
{
             for(int i=0;i<size;i++)
            for(int j=0;j<(size-1);j++)
                       if (array[j]>array[j+1])
                       {
                             int b=array[j];
                         array[j]=array[j+1];
                             array[j+1]=b;
                       }
}
 
 
void INSERTION(int array[], int size)
{
        for(int i=1;i<size;i++)
           {
                int v=array[i];
                for(int j=i-1;(j>=0 && array[j]<v); j--)
                         {
                        v=array[j];
                        array[j+1]=array[j];
                        array[j+1]=v;
                         }
           }
}
 
void full(int array[],int size)
       {
             srand(time(0));
             for(int i=0;i<size;i++)
                      array[i] = 1+rand()%1000;
       }
 
main(){
 
 
 
int array_1[1000];
full(array_1,(sizeof(array_1)/4));
 
int array_2[5000];
full(array_2,(sizeof(array_2)/4));
 
int array_3[10000];
full(array_3,(sizeof(array_3)/4));
 
double xtime[1][2];
clock_t mytime=clock();
 
 
INSERTION(array_1,(sizeof(array_1)/4));
xtime[1][0]=(double)(clock()-mytime)/1000;
 
INSERTION(array_2,(sizeof(array_2)/4));
xtime[1][1]=(double)(clock()-mytime)/1000;
 
INSERTION(array_3,(sizeof(array_3)/4));
xtime[1][2]=(double)(clock()-mytime)/1000;
 
 
 
BUBBLE(array_1,(sizeof(array_1)/4));
xtime[0][0]=(double)(clock()-mytime)/1000;
 
BUBBLE(array_2,(sizeof(array_2)/4));
xtime[0][1]=(double)(clock()-mytime)/1000;
 
BUBBLE(array_3,(sizeof(array_3)/4));
xtime[0][2]=(double)(clock()-mytime)/1000;
 
 
cout<<"bubble: "<<endl;
cout<<(sizeof(array_1)/4)<<" : "<<xtime[0][0]<<endl;
cout<<(sizeof(array_2)/4)<<" : "<<xtime[0][1]<<endl;
cout<<(sizeof(array_3)/4)<<" : "<<xtime[0][2]<<endl<<endl;
 
 
cout<<"insertion: "<<endl;
cout<<(sizeof(array_1)/4)<<" : "<<xtime[1][0]<<endl;
cout<<(sizeof(array_2)/4)<<" : "<<xtime[1][1]<<endl;
cout<<(sizeof(array_3)/4)<<" : "<<xtime[1][2]<<endl<<endl;
 
 
return 0;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2011, 04:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос устранить ошибки (C++):

в коде ниже есть ошибки. в чем они и как их устранить? - C++
structure brother { char name; into age; sister kin; }a; structure sister { char name; into age;

устранить ошибку - C++
помогите пожалуста устранить ошибку в програме.. #include &lt;stdio.h&gt; #include &lt;time.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; ...

Устранить ошибку в коде - C++
Здравствуйте, в чем ошибка..? Написать программу, которая предлагает пользователю ввести число и, затем подсчитывает, сколько раз это...

Устранить бесконечный цикл - C++
Можете подсказать в чем ошибка? Программа запускается, но, после ввода основания и 2ух чисел, останавливается. #include &quot;stdafx.h&quot; ...

Как устранить мерцание в консоли? - C++
Здравствуйте. Написал несколько классов, рисующих в памяти кадр. Вывожу при помощи cout символами псевдографики, перед выводом следующего...

Помогите устранить ошибку в коде. - C++
Здравствуйте не могу понять почему в программе в строке 54 выдает ошибку. У меня в классе массив указателей объявлен как Static. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
08.01.2011, 13:30 #2
Я бы немного оптимизировал бы сортировку пузырьком
C++
1
2
3
4
5
6
7
8
9
10
11
12
void BUBBLE(int array[], int size)
{
    int i, j, tmp;
    for(i = 0; i < size; ++i)
        for(j = 0; j < size - i - 1; ++j)
            if (array[j] > array[j + 1])
            {
                tmp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = tmp;
            }
}
Цитата Сообщение от Belek Посмотреть сообщение
но тут у меня выходит что сортировка пузырька сортирует массив из 1000 элементов быстрее чем сортировка втсавкой
На самом деле, пузырьковая сортировка действительно эффективнее более сложных алгоритмов сортировки. Так что это вполне нормальная ситуация
Belek
6 / 6 / 0
Регистрация: 15.12.2010
Сообщений: 200
08.01.2011, 13:57  [ТС] #3
яссно... всегда думал что пузырьковая сортировка самая медленная и не эффективная... да и в книжках так сказанно...
как вы посоветовали я оптимизировал, но никакой разницы не заметил...просто поменяли место объявления переменных int i, j и b... по моему это никак не сказывается на работоспособносте программы. или я ошибаюсь?
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
08.01.2011, 14:02 #4
Belek, а вы не заметили изменений во втором for? Эта оптимизация изменяет сложность алгоритма с http://www.cyberforum.ru/cgi-bin/latex.cgi?{n}^{2} на http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{{n}^{2}}{2}

И кстати, на очень больших объемах данных создание переменных в цикле тоже увеличивает время выполнения
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
08.01.2011, 14:05 #5
Belek, ну конечно, не скажется. У вас на каждом проходе внешнего цикла внутренний цикл пробегает массив полностью. В оптимизированном вариант на каждом проходе внешнего цикла внутренний пробегает только ещё не отсортированную часть массива, которая с каждой итерацией внешнего цикла уменьшается на 1.

Добавлено через 32 секунды

Не по теме:

M128K145, торможу, как всегда)))

Belek
6 / 6 / 0
Регистрация: 15.12.2010
Сообщений: 200
08.01.2011, 14:10  [ТС] #6
упс, да. for я проморгал. извените. спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2011, 14:10
Привет! Вот еще темы с ответами:

Устранить ошибку g++ chrono has not been declared - C++
Пишет что chrono has not been declared как его заменить можно или как активировать? #include &lt;iostream&gt; #include &lt;thread&gt; #include...

Устранить множественный вывод символа 'м' - C++
считываю из файла данные в массив s затем через for хочу считать массив, что бы в отдельной переменной задать значение цены. но при...

Потоки. Устранить ошибку heap corruption - C++
Задание: Написать программу, которая разбивает файл любого формата на заданное количество кусочков, а затем восстанавливаем файл из этих...

Как устранить дублирование вывода массива? - C++
дублируется массив выбирая: &quot;If you want to have data automatically, Enter 2 &quot; (Генерация чисел ) Как исправить? #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.01.2011, 14:10
Ответ Создать тему
Опции темы

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