Сортировка методом пузырька - C (СИ)
Формулировка задачи:
Здравствуйте, напишите, пожалуйста, такую программу.
Напишите программу, сортирующую массив вещественных чисел по возрастанию методом пузырька. (С ЭТИМ НЕТ ПРОБЛЕМ). Но самое сложное здесь это её модификация.
Модификация программы:модифицируйте программу так, чтобы она сортировала в алфавитном порядке строки текстового файла. Вы можете рассчитывать на то, что число строк в файле не превышает 100 и длина каждой строки не более 80 символов. Во время сортировки не переставляйте собственно строки - это увеличивает время сортировки: используйте указатели. (ВОТ здесь ничего не получается)
Решение задачи: «Сортировка методом пузырька»
textual
Листинг программы
void sort(char **Data, int count)
{
char **i;
char **j;
char *temp;
char *pi;
char *pj;
int Flag;
for (i=Data; i<Data+Count-1; ++i)
{
for (j=i+1; j<=Data+Count-1; ++j)
{
for (pi=*i, pj=*j, Flag=0; (*pi!='\0')||(*pj!='\0'), ++pi)
{
if ((*pi)>(*pj))
{
Flag=1;
}
if ((*pi)!=(*pj))
{
break;
}
}
if (Flag!=0)
{
temp=*i;
*i=*j;
*j=temp;
}
}
}
}
Объяснение кода листинга программы
В этом коде реализована сортировка массива строк методом пузырька. Список действий:
- Входные данные: массив строк Data и его размер count.
- В каждой итерации внутреннего цикла, начиная с 1-го элемента, сравниваются пары соседних элементов.
- Если первый элемент больше второго, то они меняются местами, и устанавливается флаг Flag=1.
- Если элементы не равны, то поиск разницы в значениях продолжается.
- Если элементы равны, то поиск разницы прекращается, и они больше не сравниваются.
- Если Flag=1, то элементы меняются местами.
- После завершения внутреннего цикла, происходит проверка внешнего цикла.
- Если Flag=1, то элементы меняются местами.
- Циклы повторяются до тех пор, пока массив не будет отсортирован.
- Результат: отсортированный массив строк.