C/C++ Урок 37. Сортируем элементы списка
Продолжим работу с нашим списком, начатую на 28-м уроке
Для сортировки элементов списка мы воспользуемся методом пузырьков. Алгоритм его приблизительно такой - просматриваем элементы нашего списка соседними парами от начала до конца. Т. е. сначала смотрим пару нулевого и первого элементов, потом первого и второго и т. п. В каждой паре при необходимости меняем элементы - если они стоят не в том порядке. Так доходим до конца списка. Если мы поменяли хотя бы одну пару, то повторяем все с начала - т. е. начинаем смотреть пары от начала и до конца. И так будем делать до тех пор, пока при очередном проходе мы ничего не поменяем - тогда список и окажеться отсортированным.
Приступаем к коду.
В класс CList добавим объявление метода Sort:
class CList
{
public:
...
// Сортировка.
void Sort();
...
Добавим, естественно, и реализацию для этого метода:
void CList::Sort()
{
bool b; // Меняли ли соседние элементы списка?
do
{
b = false; // пока ничего не меняли.
// Смотрим элементы до предпоследнего.
for (int i = 0; i<GetCount()-1; i++)
{
if (GetAt(i)->a > GetAt(i+1)->a)
{
Change(GetAt(i));
b = true;
}
}
}while (b);
}
С этим методом все.
|