Кіріспе

Бисер сұрыптау, сондай-ақ гравитациялық сұрыптау деп аталады, бұл табиғи сұрыптау алгоритмі. Оны 2002 жылы Джошуа Дж. Аруландам, Кристиан С. Калуде және Майкл Дж. Диннен жасап, Теориялық компьютерлік ғылымдар жөніндегі Еуропалық қауымдастықтың бюллетенінде жариялаған. Бисер сұрыптаудың цифрлік және аналогтық аппараттық іске асырылымдары O(n) сұрыптау уақытына қол жеткізе алады; алайда, бұл алгоритмнің бағдарламалық қамтамасында іске асырылуы айтарлықтай баяу болады және тек оң бүтін сандар тізімін сұрыптау үшін ғана қолданылуы мүмкін. Бұған қоса, ең жақсы жағдайда да алгоритмге O(n²) жад кеңістігі қажет болып көрінеді.

Алгоритмнің жалпы көрінісі

Бұл әрекетті, мысалы, абакустағы дөңгелектердің параллель тіреулерде сырғанауына ұқсатуға болады. Дегенмен, әр тіреуде әртүрлі мөлшерде дөңгелек болуы мүмкін. Бастапқыда, дөңгелектерді тік тіреулерге ілінгендей елестету пайдалы. 1-қадамда, n=5 қатар дөңгелектер m=4 тік тіреулерде осылай орналасқан. Әр қатардың оң жағындағы сандар сол қатарды көрсететін мәнді білдіреді; 1- және 2-қатарлар 3 оң бүтін санын көрсетеді (өйткені олардың әрқайсысында үш дөңгелек бар), ал жоғарғы қатар 2 оң бүтін санын көрсетеді (себебі онда тек екі дөңгелек бар). Егер дөңгелектерді түсірсек, қатарлар сұрыпталған түрде бірдей бүтін сандарды көрсетеді. 1-қатар жиынның ең үлкен санын, ал n-қатар ең кішкене санын қамтиды. Егер 1 k тіреулерде дөңгелектер тізбегін қамтитын және k+1 m тіреулерді бос қалдыратын жоғарыда аталған келісім сақталса, онда да солай болады. Физикалық мысалдағы дөңгелектердің "түсуіне" рұқсат ету, жоғары қатарлардағы үлкен мәндердің төменгі қатарларға таралуына мүмкіндік берді. Егер a қатарындағы мән a+1 қатарындағы мәннен кіші болса, a+1 қатарындағы бірнеше дөңгелек a қатарына түседі; бұл міндетті түрде болады, өйткені a қатарында a+1 қатарынан түсетін дөңгелектерді тоқтатуға дөңгелектер жоқ. Дөңгелектерді сұрыптау механизмі санау сұрыптау механизміне ұқсас; әр тіректегі дөңгелектердің саны сол тіреу индексіне тең немесе одан үлкен мәнді элементтердің санына сәйкес келеді.