Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
3 / 3 / 0
Регистрация: 25.11.2011
Сообщений: 20

Алгоритм сортировки вычерпыванием

02.12.2011, 02:29. Показов 2109. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кто-нибудь знает как работает этот алгоритм, ну или есть готовый исходник сортировки?

Добавлено через 9 минут
Цитата Сообщение от Fury93 Посмотреть сообщение
Кто-нибудь знает как работает этот алгоритм, ну или есть готовый исходник сортировки?

Я нешел, можете не искать, вот если кому-нибудь понадобиться на Паскале:
Pascal
1
2
3
4
5
 type
 atype = array [1 .. 100] of real;
 ....
 
 0 <= a[i] <= m
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 //Передается строка чисел "a" для сортировки, а также размерность её n и максимальный из элементов m
 //Возвращается отсортированная по возрастанию строка
 procedure SortV(n,m: integer; var a: atype);
 var
 b: array [0 .. 1000, 20] of real;
 c: array [0 .. 1000] of integer; //Т.е программа будет работать только с max(a)<=1000.0 
 i, j, k :integer;
 
 begin
 //Заполняем нулями массив c[i]
 for i:=0 to 99 do c[i]:=0;
 
 //Цикл в котором массив a делится на 0m-1) "черпаков"
 for i:=1 to n do
 begin
 j:=trunc(a[i]); //Номер черпака(столбца матрицы b) равен целой части a[i]
 c[j]:=c[j]+1; //Прибавляем кол-во элементов в столбце j
 b[ j , c[j] ]:=a[i]; //Ставим элемент a[i] в конец столбца с номером j (либо 1-ым, если столбец еще пустой)
 
 end;
 
 //Сортировка данных внутри черпаков (любым методом, например прямого перебора с формированием отсортир. массива)
 for i:=1 to m do
 if c[i]>0 then //Если i-черпак не пустой
 sort2(b, c, i); //Передаем матрицу "b", вектор "c" с кол-вом элементов в черпаках и индекс i для сортировки в i-ом черпаке.
 //Сортировка должна вестись по 2-му индексу матрицы "b" - т.е. для каждого из столбцов.
 
 //Предполагаем, что на выходе процедуры Sort2 имеем матрицу b с отсортированными по возрастанию данными в каждом из столбцов, т.е. b[i,k]<=b[i,k+1], для любых допустимых (k, i).
 
 //Выстраиваем вектор a из уже отсортированных содержимых "черпаков" b[i, k]
 i:=1;
 j:=1;
 while (i<= m) do
 begin
 if c[i]>0 then begin
 for k:=1 to c[i] do begin 
 a[j]:=b[i, k]; 
 j:=j+1;
 end; //for
 end; //if
 i:=i+1;
 end; //while
 
 end; //proc
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Пример:
a=[3, 5, 1, 2]
n=4 - элементов строки
m=5 - максим. число

В рез-те имеем после деления на черпаки b=|| 1, 2, 3, 0, 5, ... , 0|| , c=[1, 1, 1, 0, 1] - вектор количеств элементов в каждом черпаке.
|| 0, 0, 0, 0, 0, ..., 0||
|| .., .., .., .., .. ||
|| 0, 0, 0, 0, 0, ..., 0||
В данном примере в "b" нам интересны только первые 5 элементов,остальные - нули.
Сортировка внутри черпаков здесь не нужна, т.к. в каждом столбце один элемент - в случае дробных чисел могут появиться несколько элементов в столбцах, например если в векторе "a" есть элементы 3.5, 3.8 - они окажутся оба в 3-м столбце (см.алгоритм)

В результате последнего цикла получаем a=[1,2,3,5].
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.12.2011, 02:29
Ответы с готовыми решениями:

Алгоритмы сортировки (сортировка и вычисляемыми адресами, вычерпыванием, по индексам и с указателями).
Алгоритмы сортировки (сортировка и вычисляемыми адресами, вычерпыванием, по индексам и с указателями). Нужно как бы три программы(каждую...

Вывести элементы, присутствующие в обоих массивах А и В. Алгоритм сортировки - подсчетом, алгоритм поиска - двоичный
Вывести элементы, присутствующие в обоих массивах А и В. Алгоритм сортировки - подсчетом, алгоритм поиска - двоичный. Помогите пожалуйста...

Сортировка вычерпыванием, неправильное разыменование
нужна программа для реализации сортировки методом вычерпывания, объяснения в виде комментариев обязательны Добавлено через 15 минут ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.12.2011, 02:29
Помогаю со студенческими работами здесь

Алгоритм сортировки
Джек разрабатывает новый алгоритм сортировки и в свободное время экспериментирует на сотрудниках своей фирмы. Сейчас он выстроил всех своих...

Алгоритм сортировки
Джек разрабатывает новый алгоритм сортировки и в свободное время экспериментирует на сотрудниках своей фирмы. Сейчас он выстроил всех своих...

алгоритм сортировки
каким алгоритмом можно провести сортировку 5 элементов за 7 и менее шагов?

Алгоритм сортировки
Здравствуйте, подскажите пожалуйста какой алгоритм можно использовать при решении такой задачи: Дана строка char * из букв и цифр...

Алгоритм сортировки O(n)
Подскажите алгоритмы сортировок, которые выполняются за O(n).


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru