Блочная сортировка

Элементы распределяются по корзинам
Затем элементы в каждой корзине сортируются

Блочная сортировка (Карманная сортировка, корзинная сортировка, англ. Bucket sort) — алгоритм сортировки, в котором сортируемые элементы распределяются между конечным числом отдельных блоков (карманов, корзин) так, чтобы все элементы в каждом следующем по порядку блоке были всегда больше (или меньше), чем в предыдущем. Каждый блок затем сортируется отдельно, либо рекурсивно тем же методом, либо другим. Затем элементы помещаются обратно в массив. Этот тип сортировки может обладать линейным временем исполнения.

Данный алгоритм требует знаний о природе сортируемых данных, выходящих за рамки функций "сравнить" и "поменять местами", достаточных для сортировки слиянием, сортировки пирамидой, быстрой сортировки, сортировки Шелла, сортировки вставкой.

Преимущества: относится к классу быстрых алгоритмов с линейным временем исполнения O(N) (на удачных входных данных).

Недостатки: сильно деградирует при большом количестве мало отличных элементов, или же на неудачной функции получения номера корзины по содержимому элемента. В некоторых таких случаях для строк, возникающих в реализациях основанного на сортировке строк алгоритма сжатия BWT, оказывается, что быстрая сортировка строк в версии Седжвика значительно превосходит блочную сортировку скоростью.

Алгоритм

Если входные элементы подчиняются равномерному закону распределения, то математическое ожидание времени работы алгоритма карманной сортировки является линейным. Это возможно благодаря определенным предположениям о входных данных. При карманной сортировке предполагается, что входные данные равномерно распределены на отрезке [0, 1).

Идея алгоритма заключается в том, чтобы разбить отрезок [0, 1) на n одинаковых отрезков (карманов), и разделить по этим карманам n входных величин. Поскольку входные числа равномерно распределены, предполагается, что в каждый карман попадет небольшое количество чисел. Затем последовательно сортируются числа в карманах. Отсортированный массив получается путём последовательного перечисления элементов каждого кармана.

Псевдокод

function bucket-sort(A, n) is
  buckets ← новый массив из n пустых элементов
  for i = 0 to (length(A)-1) do
    вставить A[i] в конец массива buckets[msbits(A[i], k)]
  for i = 0 to n - 1 do
    next-sort(buckets[i])
  return Конкатенация массивов buckets[0], ..., buckets[n-1]

На вход функции bucket-sort подаются сортируемый массив (список, коллекция и т.п.) A и количество блоков - n.

Массив buckets представляет собой массив массивов (массив списков, массив коллекций и т.п.), подходящих по природе к элементам A.

Функция msbits(x,k) тесно связана с количеством блоков - n (возвращает значение от 0 до n), и, в общем случае, возвращает k наиболее значимых битов из x (floor(x/2^(size(x)-k))). В качестве msbits(x,k) могут быть использованы разнообразные функции, подходящие по природе сортируемым данным и позволяющие разбить массив A на n блоков. Например, для символов A-Z это может быть сопоставление номерам букв 0-25, или возврат кода первой буквы (0-255) для ASCII набора символов; для чисел [0, 1) это может быть функция floor(n*A[i]), а для произвольного набора чисел в интервале [a, b) - функция floor(n*(A[i]-a)/(b-a)).

Функция next-sort также реализует алгоритм сортировки для каждого созданного на первом этапе блока. Рекурсивное использование bucket-sort в качестве next-sort превращает данный алгоритм в поразрядную сортировку. В случае n = 2 соответствует быстрой сортировке (хотя и с потенциально плохим выбором опорного элемента).

Оценка сложности

Оценим сложность алгоритма блочной сортировки для случая, при котором в качестве алгоритма сортировки блоков (next-sort из псевдокода) используется сортировка вставками.

Для оценки сложности алгоритма введём случайную величину ni, обозначающую количество элементов, которые попадут в карман B[i]. Время работы сортировки вставками равно .

Время работы алгоритма карманной сортировки равно

Вычислим математическое ожидание обеих частей равенства:

Найдем величину .

Введем случайную величину , которая равна 1, если A[j] попадает в i-й карман, и 0 в противном случае:

Если k ≠ j, величины Xij и Xik независимы, поэтому:

Таким образом

Итак, ожидаемое время работы алгоритма карманной сортировки равно

Литература

  • Кормен, Томас Х., Лейзерсон, Чарльз И., Ривест, Рональд Л., Штайн, Клифорд. Глава 8. Сортировка за линейное время // Алгоритмы: построение и анализ, 2-е издание = Introduction to Algorithms second edition. — М.: «Вильямс», 2005. — С. 230 - 234. — ISBN 5-8459-0857-4.

См. также

Ссылки

Read other articles:

Painting by Francisco de Goya You can help expand this article with text translated from the corresponding article in French. (July 2018) Click [show] for important translation instructions. View a machine-translated version of the French article. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-translated t...

 

Montifringilla nivalis Status konservasiRisiko rendahIUCN103819582 TaksonomiKerajaanAnimaliaFilumChordataKelasAvesOrdoPasseriformesFamiliPasseridaeGenusMontifringillaSpesiesMontifringilla nivalis Linnaeus, 1766 Tata namaSinonim takson Fringilla nivalis Linnaeus, 1766 DistribusiRange of M. nivalis     Resident      Non-breeding lbs Montifringilla nivalis nivalis Montifringilla nivalis adalah burung pengicau kecil. Terlepas dari namanya, it...

 

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Taylorcraft Aircraft – news · newspapers · books · scholar · JSTOR (March 2008) (Learn how and when to remove this template message) Taylorcraft AviationCompany typeSubsidiaryIndustryGeneral aviationFounded1935; 89 years ago (1935) in Bradford...

American baseball player (born 1977) For other people named Brian Roberts, see Brian Roberts (disambiguation). Baseball player Brian RobertsRoberts with the Baltimore OriolesSecond basemanBorn: (1977-10-09) October 9, 1977 (age 46)Durham, North Carolina, U.S.Batted: SwitchThrew: RightMLB debutJune 14, 2001, for the Baltimore OriolesLast MLB appearanceJuly 28, 2014, for the New York YankeesMLB statisticsBatting average.276Home runs97Runs batted in542 Teams Ba...

 

Seorang pria memainkan pungi di jalan raya Pungi (Hindi: पुंगी), juga disebut been (बीन) dan murli, adalah sebuah alat musik tiup yang dimainkan oleh pementas tarian ular di anak benua India. Pungi berasal dari India dan masih dimainkan oleh para pementas tarian ular dalam pementaan jalan raya. Lihat pula Hulusi, sebuah alat musik Tionghoa serupa Referensi Pranala luar Cobra Dance at Negombo Beach

 

У этого термина существуют и другие значения, см. Авгуры (значения). Авгур Денарий Метелла, 81 год до н. э. Авгу́р — член почётной римской жреческой коллегии, выполнявший официальные государственные гадания для предсказания исхода тех или иных мероприятий по ряду при�...

Bupati MalakaLambang Kabupaten MalakaPetahanaDr. Simon Nahak, S.H., M.H.sejak 26 April 2021Masa jabatan5 tahunDibentuk2013Pejabat pertamadr. Stefanus Bria Seran, M.P.H.Situs webmalakakab.go.id Berikut adalah Daftar Bupati Malaka yang pernah menjabat. No. Potret Nama Mulai Menjabat Selesai Menjabat Prd. Wakil Bupati Ket. sehubungan dengan belum berlangsungnya pemilihan bupati, Kepala Badan Pemberdayaan Masyarakat Desa Prov. NTT, Herman Nai Ulu diangkat menjadi Penjabat Bupati (23 April 20...

 

American soccer team This article uses bare URLs, which are uninformative and vulnerable to link rot. Please consider converting them to full citations to ensure the article remains verifiable and maintains a consistent citation style. Several templates and tools are available to assist in formatting, such as reFill (documentation) and Citation bot (documentation). (August 2022) (Learn how and when to remove this message) A major contributor to this article appears to have a close connection...

 

拉尔·巴哈杜尔·夏斯特里第二任印度总理任期1964年6月9日—1966年1月11日总统薩瓦帕利·拉達克里希南前任古爾扎里拉爾·南達继任古爾扎里拉爾·南達印度外交部長任期1964年6月9日—1964年7月18日总理自己前任古爾扎里拉爾·南達继任斯瓦倫·辛格(英语:Swaran Singh)印度內政部長任期1961年4月4日—1963年8月29日总理賈瓦哈拉爾·尼赫魯前任戈文德·巴拉布·潘特(英语:Govind Balla...

ضريح بير أستيرمعلومات عامةنوع المبنى ضريحالمكان Estir (en) المنطقة الإدارية مقاطعة سبزوار البلد  إيرانالاستعمال ضريح الصفة التُّراثيَّةتصنيف تراثي المعالم الوطنية الإيرانية (2011 – ) معلومات أخرىالإحداثيات 36°12′59″N 57°29′57″E / 36.21647°N 57.49922°E / 36.21647; 57.49922 تعديل - تع�...

 

الشرق الأدنى القديم المناطق والدول الهلال الخصيب بلاد الرافدين فترة أوروك سومر الإمبراطورية الأكدية آشور بابل مصر مصر القديمة مملكة مصر القديمة المملكة المصرية الوسطى المملكة المصرية الحديثة المملكة البطلمية مصر الرومانية بلاد فارس الإمبراطورية الأخمينية عيلام ميديا �...

 

Period in the history of philosophy Part of a series onPhilosophy Philosophy portal Contents Outline Lists Glossary History Categories Disambiguation Philosophies By period Ancient Ancient Egyptian Ancient Greek Medieval Renaissance Modern Contemporary Analytic Continental By region African Egypt Ethiopia South Africa Eastern philosophy Chinese Indian Indonesia Japan Korea Vietnam Indigenous American Aztec philosophy Middle Eastern philosophy Iranian Western American British French German...

Bantu language spoken in Cameroon and Equatorial Guinea Not to be confused with Bongwe language. IyasaBongweNative toCameroonEquatorial GuineaGabonEthnicityYasa and Pygmies[1]Native speakers2,400 in Cameroon and Equatorial Guinea (2000–2011)[1]unknown number in Gabon[1]Language familyNiger–Congo? Atlantic–CongoBenue–CongoBantoidBantu (Zone A)Sawabantu (A.30)Kombe?IyasaLanguage codesISO 639-3ykoGlottologyasa1242Guthrie codeA.33a[2]ELPIyasaYasa ...

 

Container for completed vote records during an election For Unicode symbols with ballot box in their names, see Checkbox § Unicode. Part of the Politics seriesVoting Balloting Ballots Absentee ballot Provisional ballot Sample ballot Candidates and Ballot measures Write-in candidate Electorate Slate Ticket Collection Ballot box Compulsory voting Early voting Electronic voting Open ballot Polling place Postal voting Precinct Vote center Voting booth Counting Popular vote Tally Voting mach...

 

In property law, the transfer of ownership of a thing from one person to another Assignee redirects here. For the racehorse, see Assignee (horse). This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources:&#...

German field marshal and statesman (1847–1934) This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article may be too long to read and navigate comfortably. When this tag was added, its readable prose size was 17,000 words. Consider splitting content into sub-articles, condensing it, or adding subheadings. Please discuss this issue on the article's talk page. (May 2024) The neutrality ...

 

Приём византийским императором Иоанном Цимисхием послов князя Святослава Игоревича и запись писцом на пергамене условий мирного договора, предложенных Святославом. Миниатюра из Радзивилловской летописи, конец XV века Киевская Русь имела дипломатические[1] отношен�...

 

New York ApplesSportTeam tennisFoundedMay 22, 1973 (1973-05-22)Folded1978LeagueWorld TeamTennisDivisionEasternTeam historyNew York Sets1974–1976New York Apples1977–1978Based inNew York, New YorkStadiumNassau Veterans Memorial Coliseum(Capacity: 16,170)Madison Square Garden(Capacity: 17,812)Felt Forum(Capacity: 3,773)ColorsBrunswick Green, Imperial Red    OwnerSol BergPresidentSol BergHead coachFred StolleGeneral managerElla MusolinoChampionships2 – 1976, 1977Div...

Star in the constellation Ursa Major For other uses, see Alioth (disambiguation). Alioth Location of Alioth (circled) Observation dataEpoch J2000      Equinox J2000 Constellation Ursa Major Right ascension 12h 54m 01.74959s[1] Declination +55° 57′ 35.3627″[1] Apparent magnitude (V) 1.77[2] Characteristics Spectral type A1III-IVp kB9 U−B color index +0.02[2] B−V color index −0.02[2...

 

Works that are experimental or innovative For other uses, see Avant-garde (disambiguation). This article's factual accuracy is disputed. Relevant discussion may be found on the talk page. Please help to ensure that disputed statements are reliably sourced. (August 2023) (Learn how and when to remove this message) Avant-garde cinema: The Love of Zero (1928), a short film directed by the artist Robert Florey.[1] In the arts and in literature, the term avant-garde (from French meaning ad...