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

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

Войти
Регистрация
Восстановить пароль
 
mugik
-18 / 0 / 0
Регистрация: 31.08.2012
Сообщений: 3
#1

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

01.09.2012, 19:21. Просмотров 322. Ответов 0
Метки нет (Все метки)

Задача: Написать алгоритм который сортирует массив следующим образом: если его длина меньше 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++
Задача: Написать программу которая принимает в качестве аргумента имя файла f с русским текстом и печатает его в точности по одному...

Не большой код, нужно написать коментарии хотябы на главные строчки! - C++
string fixErrors(string encfile) { int doh = 0; int sindromeOneOriginal; int sindromeTwoOriginal; int...

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

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

ошибки в задаче(код внутри) - C++
надо таким макаром ввести сведенья об учащихся а потом пощитать средний бал всех и вывести инфу об учащимся с макс средним балом. тут я...

Объясните как написать код к задаче :) - C++
Даны натуральное число n , действительные числа x1, ... ,xn. В последовательности х1, ... ,xn все члены меньше двух, заменить нулями. Кроме...

Сформировать список. Какой будет код к задаче? - C++
Сформировать список L, включив в него по одному разу элементы, которые входят хотя бы в один из списков L1 и L2, но в то же время не входят...

Проверьте код - C++
Есть задача. Её нужно решить в консольном приложении. Написал к ней код, ну не вычисляет и всё тут... Скорее всего я нуб просто, проверьте....

Проверьте код - C++
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; int main() { int a,b,res; char zn; scanf (&quot;%u %u&quot;,&amp;a,&amp;b);...

Проверьте код - C++
Не очень хорошо пошли мне класcы, да и сейчас не уверен все хорошенько ли понял. Так вот было задание простое. Принять имена на вход,...


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

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

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