Четверг, 17.07.2025, 07:52
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
.:: Меню ::.
.:: Категории каталога ::.
Разное [5]
Различные темы по программированию
Пакет SWT [4]
Практикуемся в написании оконных приложений на Java
Среды разработки, компиляторы и т.п [3]
Сравнения, описания, плюсы и минусы сред разработки. Сравнение компиляторов.
Java [8]
Объектно-ориентированные соображения.
Си++ [19]
Коротко и ясно
Ассемблер [6]
Машинные коды, побитно :)
Форма входа
.:: Поиск ::.
.:: Дополнительно ::.
    Хостинг от Loqo.ru
             .:: Коментируем ::.
Главная » Статьи » Текстовый материал » Си++

Сортировка пузырьком и шаблоны функций
Начнём с самого метода сортировки.

Текст с Википедии:
Вход: массив A, состоящий из элементов A[1], A[2], ..., A[n]

t := истина
цикл пока t:
t := ложь
цикл для j = 1, 2, ..., n − 1:
если A[j] > A[j+1], то:
обменять местами элементы A[j] и A[j+1]
t := истина
Это описание алгоритма на почти человеческом языке.

Code

#include <iostream>  
template <class T>
void Sort(T array[], size_t size)
{  
T tmp;  
bool t=true;  
while (t)  
{  
t=false;  
for (int j=0;j<size-1;j++)  
if (array[j] > array[j+1])   
{  
tmp = array[j];  
array[j]=array[j+1];  
array[j+1]=tmp;  
t=true;  
}  
}
}

void main(void)
{  
using namespace std;
int mas[] = {10, 20, 30, 11, 25, 32, 0};  
long mas2[] = {123,423,534,456,345};  
cout << "Size of mas = " << sizeof(mas) << endl;  
cout << "Size of mas[0] = " << sizeof(mas[0]) << endl;  
Sort(mas, sizeof(mas)/sizeof(mas[0]));  
for(int i = 0; i < sizeof(mas)/sizeof(mas[0]); i++)
cout << "mas[" << i << "] = " << mas[i] <<endl;  
cout << "Size of mas = " << sizeof(mas2) << endl;  
cout << "Size of mas[0] = " << sizeof(mas2[0]) << endl;  
Sort(mas2, sizeof(mas2)/sizeof(mas2[0]));  
for(int i = 0; i < sizeof(mas2)/sizeof(mas2[0]); i++)
cout << "mas2[" << i << "] = " << mas2[i] << endl;  
system ("pause");
}


Включаем в нашу программу необходимые описания #include <iostream>
Указываем, что следующая функция использует шаблон - template <class T>
Теперь под буквой T у нас понимается какой-то абстрактный тип данных, он может быть int, long и т.д.
Функция Sort принимает параметры в виде массива с элементами T и размера этого массива.
Есть ещё переменная tmp типа T для хранения значений при обмене.
Дальше, реализуем алгоритм и проводим испытания на разных типах данных, используя массив int и long.
Не забываем использовать пространство имён std !
Напоню, его использование выглядит так: using namespace std;
(Хотя можно и подставлять std перед функциями: std::cout << "Hello !";)

Скоро напишу про шаблоны классов, тоже необходимые знания.

Категория: Си++ | Добавил: C0demaker (12.04.2010)
Просмотров: 3810 | Рейтинг: 5.0/1
Всего комментариев: 0

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ant1 © 2025