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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2013, 20:12   #1
Mariolka
Пользователь
 
Регистрация: 14.12.2012
Сообщений: 25
По умолчанию Алгоритм сортировки на Си

Здравствуйте. у меня задание: Дан массив строк. Вывести на экран все слова, являющиеся анаграммами. Для поиска анаграмм нужно произвести следующие действия:
отсортировать буквы всех слов по алфавиту;
реализовать функцию сравнения строк;
отсортировать слова с сортированными буквами по алфавиту. Для этого нужно создать массив индексов и при сортировке переставлять элементы в массиве индексов, не изменяя массив слов;
просмотреть массив строк в порядке, указанном в массиве индексов, повторяющиеся слова напечатать в первоначальном виде. Слова-анаграммы печатаются в строчку (таких слов может быть два и более).

И вот я написала программу:
#include "stdio.h"

void sort(char* str, int n)
{
int t=0, p, f;
char m;
while(t<n-1)
{
f=n-1;
for(p=n-1; p>t; p--)
if(str[p]<str[p-1])
{
m=str[p];
str[p]=str[p-1];
str[p-1]=m;
f=p;
}
#ifdef DEBUG_SORT
printf("massive - %s, f=%i\n", str, f);
#endif
t=f;
}
}

int check_sort(char* str, int n)
{
int i, f=1;
for(i=0; i<n-1; i++)
if(str[i]>str[i+1]) f=0;
return f;
}

int sravnenie(char* str, char* str2)
{
int i=0,g=0;
while(str[i]&&str2[i])
{
if (str[i]>str2[i]) {g= 1; break;}
else if (str[i]<str2[i]) {g=-1; break;}
i++;
}
return(g); //возращает: 0 - если строки равны 1 - если первая больше второй -1 - если первая меньше второй
}
int main()
{
char a[11][10] = {"наладка",
"лесовоз",
"теплица",
"тальянка",
"акробат",
"петлица",
"солевоз",
"работка",
"катальня",
"отработка",
"ладанка"};
int i;

for(i=0; i<11; i++)
{
printf("test %i\n", i);
printf("massive - %s\n", a[i]);
sort(a[i], 10);
printf("sort - %s\n", a[i]);
if(check_sort(a[i], 10)) printf("test passed\n\n");
else printf("test failed\n\n");
}
int sravnenie;
Только это метод сортировки пузырьком. А мне нужно сделать методом половинного деления. Помогите пожалуйста кто знает.
Mariolka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм сортировки freshcot Помощь студентам 0 16.06.2012 21:10
Алгоритм поразрядной сортировки Bubel Общие вопросы C/C++ 1 05.12.2011 13:39
Алгоритм сортировки вычерпыванием F.Ury Помощь студентам 1 02.12.2011 02:26
Алгоритм сортировки BarsRus Помощь студентам 3 03.06.2010 16:11
Алгоритм сортировки по категориям retail_ret PHP 8 11.08.2009 00:06