Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сортировка по алфавиту.

6.0K
20 ноября 2004 года
kuma
19 / / 28.10.2004
Например имеется слова на английком ( на столбике А) и их перевод (на столбике В).Надо их сортировать по алфавиту. Но перевод должен совподать, тоесть если места для A3 изменился, тогда и В3 тоже туда должен пойти.

Спасибо!
301
20 ноября 2004 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by kuma
Например имеется слова на английком ( на столбике А) и их перевод (на столбике В).Надо их сортировать по алфавиту. Но перевод должен совподать, тоесть если места для A3 изменился, тогда и В3 тоже туда должен пойти.
Спасибо!



Идея - сортировать самому (методов много, пузырек - самый простой) и перемещать не только элементы сортируемого, но и элементы соседнего столбца (естественно аналогично)

ЗЫ Пызырек -
Перибираем элементы (слова) со второго по последний [индекс, пусть, "I" ], если I'ый элемент меньше 1'ого (скажем ААА<ААБ), то меняем их местами (и 1'ый с I'тым массива перевода). Затем тоже самое, но с 3'его элемента и меняем I'ый со вторым...

Это один из самых медленных способов, поищи исходник quicksort сортировки. Увы исходник не напишу - VB не знаю.=)

1.8K
21 ноября 2004 года
Syama
97 / / 01.03.2004
А может кто нибуть поставить код сюда, очень нужен.
301
21 ноября 2004 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by Syama
А может кто нибуть поставить код сюда, очень нужен.


Quicksort на C:

Код:
void Interchange(int *array,int i,int j)
{
 int p=array;
 array=array[j];
 array[j]=p;
}

int Partition(int *array,int m,int p)
{
 int v,i,j;
 v=array[m];
 i=m;
 j=p;
 do
 {
  do i++; while(array<v);
  do j--; while(array[j]>v);
  if(i<j)Interchange(array,i,j);
 }while(i<j);
 array[m]=array[j];
 array[j]=v;
 return j;
}

void Quicksort(int *array,int p,int q)
{
 int j;
 if(p<q)
 {
  j=Partition(array,p,q+1);
  Quicksort(array,p,j-1);
  Quicksort(array,j+1,q);
 }
}//Где *array - указатель на массив, p - номер первого элемента, а q - последнего.
6.0K
22 ноября 2004 года
kuma
19 / / 28.10.2004
Спасибо за труд.
Но увы я не разбераюсь VBA, поетому не знаю куда это писать.
301
22 ноября 2004 года
lord Kelvin
897 / / 08.11.2004
Цитата:
Originally posted by kuma
Спасибо за труд.
Но увы я не разбераюсь VBA, поетому не знаю куда это писать.


Это си++, а на каком языке ты понимаешь?

275
23 ноября 2004 года
pashulka
985 / / 19.09.2004
Вот и раскрылись "Тайны Мадридского двора", kuma и syama по всей видимости один и тот же человек.

P.S. Идея сортировать сразу оба столбца является наиболее оптимальным решением Вашего вопроса.
459
23 ноября 2004 года
gacol
273 / / 12.02.2003
А вообще то надо программу писать?
В задаче это не оговорено.
Может в Экселе встроеным сортировщиком обойтись?
411
02 декабря 2004 года
Serzh
136 / / 09.07.2003
Цитата:
Originally posted by gacol
А вообще то надо программу писать?
В задаче это не оговорено.
Может в Экселе встроеным сортировщиком обойтись?



Конечно, зачем изобретать колесо?
Такая задача возникает только при
добавлении нового слова в словарь,
так что если хочешь автоматической
сортировки, то в стандартной процедуре
Private Sub Worksheet_Change(ByVal Target As Range) вставить стандартную сортировку строк
листа.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог