Начнём с самого метода сортировки. Текст с Википедии: Вход: массив 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 !";) Скоро напишу про шаблоны классов, тоже необходимые знания.
|