Привет все программистам...нужна ваша профессиональная помошь...
Преподаватель дал задачу на так называемые СОРТИРУЮЩИЕ СЕТИ...в вузовской программе такого нет!можете объяснить что это такое,только желательно подробно,как работает и т.д.!!!
и мне нужно вот этот алгоритм реализовать на С++...у меня ровно неделя!!!
пожалуйста пишите кто чем может помочь!!!я в долгу не останусь!!!
и еще он не сказал каких-то конкретных ограничений т.е. просто реализовать на С++ этот алгоритм...
СОРТИРУЮЩИЕ СЕТИ на С++
этого нет в программе обучения...курс программирования кончился,преподавал нам программист с какой-то Омской фирмы...и вот он дал задание самой разобраться и принести программу,с этим алгоритмом сортировки!dr.Jekill писал(а):Сомневаюсь что этого нет в программе, если преподаватель задал.
Посмотри здесь.
Читай "Алгоритмы: построение и анализ" Кормен Т., Лейзерсон Ч., Ривест Р. дополнительные главы
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Спасибо за книжку,впринципе ничего сверхъестественного!!!но там ни слова про реализацию...подскажите пожалуйста,как можно сделать...dr.Jekill писал(а): Посмотри здесь.
Читай "Алгоритмы: построение и анализ" Кормен Т., Лейзерсон Ч., Ривест Р. дополнительные главы
А Я САМА НАПИСАЛА...всем спасибо...
выкладываю код программы,может кому пригодится!!!
Код: Выделить всё
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
void help(){
printf("Sorting network: \n");
printf("Format of command: \n");
printf("\tnet File.cnf [N [N [N [N...]]]] \n");
printf("File.cnf - cofiguration text file with net configuration. \n");
printf("[N [N [...]]] - input values. \n");
}
int main(int argc, char **argv){
if (argc < 3){
help();
return 0;
}
FILE *fNet = fopen(argv[1],"r");
if (!fNet){
printf("ERROR: Network file configuration incorrect!\n");
return 1;
}
printf("loading input values. \n");
int nValues = argc - 2;
int *Value = new int [nValues];
for (int i = 2;i < argc;i++){
if (sscanf(argv[i], "%i", &Value[i-2])!=1){
printf("ERROR:\"%s\" isn't number. \n",argv[i]);
fclose(fNet);
return -1;
}
}
printf("working network\n");
int iNetLayer = 0;
while(!feof(fNet)){
int nPairs = 0;
printf("%i",iNetLayer);
if(fscanf(fNet, "%i", &nPairs)!=1){
return 0;
}
int v1,v2;
for (int i = 0; i< nPairs; i++){
fscanf(fNet, "%i %i", &v1, &v2);
//printf("[%i,%i]", v1, v2);
if(v1 > v2){
int tmp = v1;
v1 = v2;
v2 = tmp;
}
if(v2 > nValues){
printf("ERROR:Incorrent configuration data (index more then array size)\n");
fclose(fNet);
return -1;
}
if (Value[v1] > Value[v2]){
int tmp = Value[v1];
Value[v1] = Value[v2];
Value[v2] = tmp;
}
}
for(int i = 0; i < nValues; i++)
printf(" %i", Value[i]);
printf("\n");
iNetLayer++;
}
return 0;
}