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

Методы сортировки.Семестровая - C++

Восстановить пароль Регистрация
 
manbI4
0 / 0 / 0
Регистрация: 29.11.2010
Сообщений: 14
14.12.2010, 14:27     Методы сортировки.Семестровая #1
Написать программу сортировки чисел 2 методами(Пузырек и Шейкера).Сортировку массивов на 3 видах массива.
1) Плохо упорядоченный
2) Почти упорядочный
3) Случайный
для каждого вида массива сохранить в файл input.txt
В подпрограмме для сортировки добавляем оператор который подсчитывает количество сравнений(n) и перестановок(m).Для каждого вида массива изменять кол-во элементов(n)).
n=20,40,60,....,10000.
Для каждого n значений c,m записать в output.txt в виде
n c m T-время
20 100 215
40 250 500
И как вычислить время затраченной операции?!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2010, 14:27     Методы сортировки.Семестровая
Посмотрите здесь:

методы сортировки C++
Методы сортировки C++
C++ Методы сортировки
C++ Методы сортировки
C++ Методы сортировки
C++ Основные методы сортировки массивов
Простые методы сортировки C++
Методы внешней сортировки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
14.12.2010, 14:57     Методы сортировки.Семестровая #2
Цитата Сообщение от manbI4 Посмотреть сообщение
3) Случайный
C++
1
2
3
4
5
6
7
///// Генерация последовательности случайных чисел///////////////
void rnd_double(double *Array, double max, double min, int Size)
{
    srand(time(NULL));
    for( int i = 0; i<Size; ++i)
       Array[i] = min + (max-min)*((double) rand()/RAND_MAX);
}
Добавлено через 3 минуты
Цитата Сообщение от manbI4 Посмотреть сообщение
1) Плохо упорядоченный
C++
1
2
3
4
5
6
///// Генерация обратно-упорядоченной последовательности///////////
  void ob_up_double( double *Array, double min, double max, int size)
 {
  for(int i=0;i<size;++i)
  Array[i]=max -((max-min)/(size-1))*i;
 }
Добавлено через 10 минут
Цитата Сообщение от manbI4 Посмотреть сообщение
2) Почти упорядочный
C++
1
2
3
4
5
6
7
8
9
10
11
//////////Генерация квазиупорядоченной последовательности//////////          
void kvazi_double( double *Array, double min, double max, int size)
 {
  int proc, i;
  for(i=0;i<size;++i)
    Array[i]=min +((max-min)/size)*i;
  proc = (int)ceil(0.001*size);
  srand(time(NULL));
  for (i=0; i<proc; ++i)
    Array[rand()%size] = min + (max-min)*((double) rand()/RAND_MAX);
 }
Цитата Сообщение от manbI4 Посмотреть сообщение
В подпрограмме для сортировки добавляем оператор который подсчитывает количество сравнений(n)
Может есть более интересные методы, но использовал вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//////// Функция "Больше" с инкрементом//////////////
bool bolshe(double a, double b)
 {
      z++;
      if (a>b)
       return true;
      else
       return false;
}
 
/////////Функция "Меньше" с инкрементом ////////////////
bool menshe(double a, double b)
 {
      z++;
      if (a<b)
       return true;
      else
       return false;
}
З.Ы. z-глобальная переменная
Fantom.AS
 Аватар для Fantom.AS
2 / 1 / 0
Регистрация: 17.11.2010
Сообщений: 121
15.12.2010, 17:07     Методы сортировки.Семестровая #3
здесь описаны 3 способа!
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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "sys/timeb.h"
#include "iostream"
#include "conio.h"
 
 
#define n 10000
#define m 10000
 
int  A[n][m],r[n],v[m];
 
int main()
{ 
int i,j;
time_t t1,t2;
clock_t start,finish;
struct timeb time1,time2; 
 
double tt;
double workTime;
int ts,tms;
 
 
printf("MATRIX");
for ( i = 0; i < n; i++)
    {//printf(" \n");
     for ( j = 0; j < m; j++)
        {A[i][j]=rand()%10;
        //printf("%d",A[i][j]);
                }
    } 
printf( "\n VECTOR \n " );
for ( i = 0; i < m; i++)
    {v[i]=rand()%10;
         r[i]=0;
         //printf("%d", v[i] );
        }
 
//получаем время до начала выполнения задачи
time(&t1);
start=clock();
ftime(&time1); 
 
for ( i = 0; i < n; i++)
        for ( j = 0; j < m; j++)
            r[i] += A[i][j] * v[j];
 
//получаем время после выполнения задачи
time(&t2);
finish=clock();
ftime(&time2); 
 
 
//определяем разницу
tt=difftime(t2,t1);
workTime=(double)(finish - start) / CLOCKS_PER_SEC;
 
ts=(int)(time2.millitm - time1.millitm) / 60;
tms=(int)(time2.millitm - time1.millitm) % 60;
 
//выводим на экран
printf("\n Time1= %f \n ",tt);
printf("\n Time2= %f \n",workTime);
printf("\n Time3= %d sec  %d milsec \n ",ts,tms);
 
getch();
return 1;
  }
Добавлено через 2 минуты
а теперь подскажите как отчет писать по этой же семестровой, по этим же методам( почти: у меня прямой выбор и Шейкер)
Yandex
Объявления
15.12.2010, 17:07     Методы сортировки.Семестровая
Ответ Создать тему
Опции темы

Текущее время: 14:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru