powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Сортировка по нескольким полям
13 сообщений из 13, страница 1 из 1
Сортировка по нескольким полям
    #39768156
sergq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Возник такой вопрос. Допустим есть у меня набор данных
Сто строк, 10 колонок.
Отсортировать по первой допустим quicksort не проблема

А вот как потом отсортировать по втрой, третьей, четвёртой ?
С учётом предидущих сортировок?
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39768169
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При сравнении проверяй все четыре колонки. Если первые равны, то сравнить вторые и т.д.
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39768563
sergq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПри сравнении проверяй все четыре колонки. Если первые равны, то сравнить вторые и т.д.

так вроде как при quicksort на равенство вообще не сравнивают. Или туплю

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
procedure qSortdesc(var A: array of byte; min, max: Integer;desc:boolean);
var i, j, supp, tmp: Integer;
begin
supp:=A[max-((max-min) div 2)]; // 
i:=min; j:=max;
while i<j do
  begin
    while A[i]>supp do
    i:=i+1; // 
    while A[j]<supp do
    j:=j-1; // 
    if i<=j then
      begin
        tmp:=A[j]; A[j]:=A[i]; A[i]:=tmp; //
        i:=i+1; j:=j-1; // 
      end;
  end;
if min<j then qSortdesc(A, min, j,desc);
if i<max then qSortdesc(A, i, max,desc);
end;
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39768582
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любой из предикатов типа
Код: pascal
1.
A[i]>supp


Можно поставить под инверсию и перевернуть знак на меньше либо равно.
Код: pascal
1.
not A[i]<=supp


Тогда и сравнение будет участвовать. Впрочем на смысл алгоритма это не влияет.

И данный пример - узкий. Он показывает сортировку целых чисел в массиве
а у тебя т.н. "строки и колонки".

Кстати советую уйти от этой терминологии и использовать объект и класс (тип).
А для сравнения нужна функция-компаратор. Которая решает какой объект больше
или меньше или равен по рангу.
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39768583
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergq,

не сравнивают, но в функции сравнения это никто не запрещает сделать в случае равенства по первой, второй, ... колонке
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39768611
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergqDima TПри сравнении проверяй все четыре колонки. Если первые равны, то сравнить вторые и т.д.

так вроде как при quicksort на равенство вообще не сравнивают. Или туплю
Обычно функция сортировки в качестве одного из параметров получает функцию-компаратор, где прописывается алгоритм сравнения. Например в С
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39768755
sergq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)sergq,

не сравнивают, но в функции сравнения это никто не запрещает сделать в случае равенства по первой, второй, ... колонке

Это что то из этой оперы?
https://stackoverflow.com/questions/47030279/quick-sort-with-multiple-keys
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39768756
sergq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЛюбой из предикатов типа
Код: pascal
1.
A[i]>supp


Можно поставить под инверсию и перевернуть знак на меньше либо равно.
Код: pascal
1.
not A[i]<=supp


Тогда и сравнение будет участвовать. Впрочем на смысл алгоритма это не влияет.

И данный пример - узкий. Он показывает сортировку целых чисел в массиве
а у тебя т.н. "строки и колонки".

Кстати советую уйти от этой терминологии и использовать объект и класс (тип).
А для сравнения нужна функция-компаратор. Которая решает какой объект больше
или меньше или равен по рангу.

У меня скорее не строки и колонки и пе объект и класс.
У меня скоре raw файл бинарный. Разбитый на блоки (строки) , а внутри блок разбит на «колонки»
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39768760
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergqmaytonЛюбой из предикатов типа
Код: pascal
1.
A[i]>supp


Можно поставить под инверсию и перевернуть знак на меньше либо равно.
Код: pascal
1.
not A[i]<=supp


Тогда и сравнение будет участвовать. Впрочем на смысл алгоритма это не влияет.

И данный пример - узкий. Он показывает сортировку целых чисел в массиве
а у тебя т.н. "строки и колонки".

Кстати советую уйти от этой терминологии и использовать объект и класс (тип).
А для сравнения нужна функция-компаратор. Которая решает какой объект больше
или меньше или равен по рангу.

У меня скорее не строки и колонки и пе объект и класс.
У меня скоре raw файл бинарный. Разбитый на блоки (строки) , а внутри блок разбит на «колонки»
Ты можешь называть это сепулькой или кандибобером.

Но в форуме программирования, очень продуктивно использовать устоявшуюся терминологию. Поверь мне.
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39768860
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergqУ меня скорее не строки и колонки и пе объект и класс.
У меня скоре raw файл бинарный. Разбитый на блоки (строки) , а внутри блок разбит на «колонки»
Без разницы что там у тебя. Сначала тебе надо сформулировать правило сравнения двух блоков. Записать в виде функции.
И только после этого сортировать.
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39768869
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автору надо почитать про современное ООП-программирование в Delphi. Вопросы отпадут ИМХО.
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39768978
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergq, а что, лексикографическое сравнени сразу 4-х блоков не проходит? как я понял, они равной длины
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39769034
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergqkealon(Ruslan)sergq,

не сравнивают, но в функции сравнения это никто не запрещает сделать в случае равенства по первой, второй, ... колонке

Это что то из этой оперы?
https://stackoverflow.com/questions/47030279/quick-sort-with-multiple-keys оно и есть
самый последний ответ из этой темы
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Сортировка по нескольким полям
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]