Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2013, 19:23   #1
lenka91
Пользователь
 
Регистрация: 02.06.2013
Сообщений: 17
По умолчанию шаблон обменной сортировки(С++)

Здравствуйте! Помогите пожалуйста, нужно улучшить шаблон обменной сортировки так, чтобы от выполнял сортировку и по возрастанию, и по убыванию, причем выбор варианта сортировки выполнялся из main программы.

что есть:

файл шаблона:
Код:
// файл sort.h
#include "stdafx.h"
#include <iostream> 


template <class T> 
void Sort(T *mass, int n)
{
	bool t = true; 
	while (t) 
	{ 
		t = false; 
		for(int i=0 ; i < n - 1 ; i++) 
		{
			for (int j=i+1; j < n; j++) 
			{
				if (mass[i] > mass[j])
				{		
					T b;
					b=mass[i];
					mass[i]=mass[j];
					mass[j]=b;
					t=true; 
				} 
			}
		}
	}
}
файл программы:
Код:
// обменная сортировка1.cpp: определяет точку входа для консольного приложения.
//
// обменная сортировка



#include "stdafx.h"
#include <iostream> 
#include "sort.h"
void main(void) 
{ 
using namespace std; 

int mas[] = {4, 3, 2, 7, 54, 5}; 

Sort(mas, sizeof(mas)/sizeof(mas[0])); 

for(int i = 0; i < sizeof(mas)/sizeof(mas[0]); i++) 

cout << "mas[" << i << "] = " << mas[i] << endl;
system ("pause"); 
}
lenka91 вне форума Ответить с цитированием
Старый 05.12.2013, 20:54   #2
Nuklon
Форумчанин
 
Аватар для Nuklon
 
Регистрация: 05.04.2012
Сообщений: 134
По умолчанию

Видоизменил немного твою функцию прибавив ещё параметр и инструкцию XOR.
Код:

template <class T>
void Sort(T *mass, int n, bool desc)
{
     bool t = true;
     while (t)
     {
          t = false;
          for(int i=0 ; i < n - 1 ; i++)
          {
               for (int j=i+1; j < n; j++)
               {
                      if((mass[i] > mass[j]) ^ desc)
                      {
                            T b;
                            b=mass[i];
                            mass[i]=mass[j];
                            mass[j]=b;
                            t=true;
                      }
               }
          }
    }
}

//dot entry...

// сортировать по возрастанию
Sort(mas, sizeof(mas)/sizeof(mas[0]), false);

// сортировать по убыванию
Sort(mas, sizeof(mas)/sizeof(mas[0]), true);
Nuklon вне форума Ответить с цитированием
Старый 05.12.2013, 21:52   #3
lenka91
Пользователь
 
Регистрация: 02.06.2013
Сообщений: 17
По умолчанию

Спасибо огромное за помощь!)
lenka91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнить эффективность алгоритмов шейкерной сортировки и сортировки слиянием (язык C) Ольга210993 Помощь студентам 2 20.09.2012 13:52
Алгоритмы сортировки пирамидальный(кучей) и быстрой сортировки (с++) mmd12 Помощь студентам 4 17.05.2012 14:14
Дано: таблица в Exel (3 столбца, 4000 строк) и шаблон документа. Задача: Распечатать один и тот-же шаблон документа, под Evgenya040305 Помощь студентам 2 24.11.2011 22:21
шаблон функции для сортировки массива. tub0rg Помощь студентам 5 23.01.2011 09:39