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

сделать коментарии и проверьте код к задаче ргр по теории информатики - C++

Восстановить пароль Регистрация
 
mugik
-18 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 3
01.09.2012, 19:21     сделать коментарии и проверьте код к задаче ргр по теории информатики #1
Задача: Написать алгоритм который сортирует массив следующим образом: если его длина меньше n то использовать метод пузырьковой сортировки а иначе-метод Хоара. Экспериментальным путём определить оптимальное значение n для типов date int и строк 16
ПРошу сделать коменты желательно поподробнее ну проверить правильность кода. Заранее благодарен тем кто поможет!
#include<iostream>
#include <ctime>
using namespace std;
struct date{
int year;
int month;
int day;
};
struct str16{
char str [16];
};
int cmp(int arg1, int arg2){
if(arg1>arg2)
return 1;
else if(arg1<arg2)
return -1;
else
return 0;
}
int cmp(date arg1, date arg2){
if(arg1.year>arg2.year)
return 1;
else if (arg1.year<arg2.year)
return -1;
else
if(arg1.month>arg2.month)
return 1;
else if(arg1.month<arg2.month)
return -1;
else
if(arg1.day>arg2.day)
return 1;
else if(arg1.day<arg2.day)
return -1;
else
return 0;
}
int cmp(str16 arg1, str16 arg2){
for(int i=0; i<16; i++){
if(arg1.str[i]>arg2.str[i])
return 1;
if(arg1.str[i]<arg2.str[i])
return -1;
}
return 0;
}
template <class T>
void bubble(T*a, int n){
for (int i=n-1;i>0;i--){
for (int j=0;j<i;j++){
if(cmp(a[j],a[j+1])==1){
T tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
}
template <class T>
void qSort(T *A, int low, int high) {
int i = low;
int j = high;
T x = A[(low+high)/2];
do {
while(cmp(A[i],x)==-1) ++i;
while(cmp(A[j] , x)==1) --j;
if(i <= j){
T temp = A[i];
A[i] = A[j];
A[j] = temp;
i++; j--;
}
} while(i <= j);

if(low < j) qSort(A, low, j);
if(i < high) qSort(A, i, high);
}
void randArr(int *mass, int count){
for(int i=0;i<count;i++){
mass[i]=rand();
}
}
void randArr(str16 *mass, int count){
for(int i =0; i<count; i++)
for(int j=0; j<16; j++)
mass[i].str[j]=rand()%255;
}
void randArr(date *mass, int count){
for(int i=0; i<count;i++){
mass[i].year=rand()%10000;
mass[i].month=rand()%12;
mass[i].day=rand()%31;
}
}
template <class T>
int optimal(){
int result=0;
int iter=400;
for(int i=0; i<iter; i++){
float bTime=0, qTime=0;
int n=2;
for(;qTime>=bTime;n++){
T *mass=new T [n];
randArr(mass,n);
clock_t t0 = clock();
bubble(mass,n);
clock_t t1 = clock();
bTime=(float)t1-t0;
clock_t t2=clock();
qSort(mass,0,n-1);
clock_t t3=clock();
qTime=(float)t3-t2;
}
result+=n;
}
return result/iter;
}
template <class T>
void mySort(T *mass, int count){
int o=optimal<T>();
if(count<o){
bubble<T>(mass,count);
cout<<"Bubble sort :"<<endl;
}
else{
qSort<T>(mass,0, count-1);
cout<<"Quick sort :"<<endl;
}
}
int main(){
cout<<"For int :"<<optimal<int>()<<endl;
cout<<"For date :"<<optimal<date>()<<endl;
cout<<"For str16 :"<<optimal<str16>()<<endl;
int count=55;
int *mass=new int [count];
randArr(mass,count);
cout<<"Test sequence :"<<endl;
for(int i=0;i<count;i++)
cout<<mass[i]<<" ";
cout<<endl;
mySort<int>(mass, count);
for(int i=0;i<count;i++)
cout<<mass[i]<<" ";
cout<<endl;
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2012, 19:21     сделать коментарии и проверьте код к задаче ргр по теории информатики
Посмотрите здесь:

Помогите написать код к задаче. C++
C++ ошибки в задаче(код внутри)
C++ Проверьте правильность написания кода и коментарии
Проверьте код C++
Написать код для игры НИМ. проверьте пожалуйста тот ли это код C++
Проверьте код C++
Не большой код, нужно написать коментарии хотябы на главные строчки! C++
C++ Набрать код к задаче С++ массивы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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