Кіріспе

Сорталау алгоритмі

Компьютерлік ғылымда санау сұрыптау – кіші оң бүтін сандар түріндегі кілттеріне сәйкес объектілер жиынын сұрыптауға арналған алгоритм; яғни, ол бүтін санды сұрыптау алгоритмі. Ол әртүрлі кілт мәндеріне ие объектілердің санын санау арқылы жұмыс істейді және осы сандарға префикс қосындысын қолданып, шығыс тізбегінде әрбір кілт мәнінің орнын анықтайды. Оның орындалу уақыты элементтер санына және ең жоғары кілт мәні мен ең төменгі кілт мәні арасындағы айырмаға сызықтық түрде байланысты, сондықтан кілттердің өзгеру диапазоны элементтер санынан айтарлықтай көп болмаған жағдайларда ғана тікелей қолдануға қолайлы. Ол көбінесе радикс сұрыптаудың ішкі алгоритмі ретінде қолданылады, бұл басқа сұрыптау алгоритмі, ол ірі кілттерді тиімдірек өңдей алады. Санау сұрыптау – салыстыру сұрыптау емес; ол кілт мәндерін массивке индекс ретінде пайдаланады, сондықтан салыстыру сұрыптауға арналған ең төменгі шек [[Big O notation#Family of Bachmann–Landau notations lower bound for comparison sorting]] оған қолданылмайды.

Вариант алгоритмдер

Егер реттелiп отыратын әрбiр элемент өзi бүтiн сан болса, онда екіншi және үшiншi циклдердi бiрiктiруге болады; екiншi циклде i нөмiрi бар элементтердiң шығарылымға орналасуы керек орынды есептеу орнына, i санының Count[i] көшiрмесiн шығаруға қосады. Бұл алгоритм қайталанған кілттерді жою үшiн де қолданылуы мүмкiн, Count массивін бiт векторымен алмастыру арқылы, кiрiсте бар кiлттер үшiн бiрлiк, ал жоқ кiлттер үшiн нөл сақталады. Егер элементтер толық сандық кілттер болса, екінші және үшінші циклдерді толығымен жоюға болады, ал бiт векторы өзі шығыс ретiнде қызмет етедi, мәндердi нөлден басқа жазбалардың ығысуы ретiнде көрсетедi, диапазонның ең төменгi мәнiне қосылады. Осылайша, кілттер сұрыпталады және дубликаттар осы нұсқада бiт массивіне орналасу арқылы жойылады. Параллель радикс сұрыптау алгоритмiнде пайдаланғанда, кілт өлшемi (радикс өкiлiнiң негiзi) бөлiнген кiшi массивтердiң өлшемiне сәйкес таңдалуы керек. Санау сұрыптау алгоритмінің қарапайымдылығы және оның оңай параллельдеуге болатын префикс сомасының мүмкiндiгi оны ұсақ бөлiмделген параллель алгоритмдерде қолдануға мүмкiндiк бередi. Сипатталғандай, санау сұрыптау орнында атқарылатын алгоритм емес; тiптi санау массивін ескермеген кезде де, оған жеке кiрiс және шығыс массивтерi қажет. Алгоритмдi өзгертуге болады, осылайша, кiрiс ретiнде берiлген массивтің iшiнде элементтердi сұрыпталған тәртiппен орналастыруға болады, тек санау массивін қосымша сақтау ретiнде пайдалана отырып; алайда, санау сұрыптаудың өзгертiлген нұсқасы тұрақты емес.