Мазмұны[Жасыру][Көрсету]
Информатика - бұл алгоритмдер мен деректер құрылымдарының күрделілігін түсіну.
Сізде сұрыптау қажет элементтер тізімі бар, бірақ күрделірек сұрыптау алгоритмін пайдалану үшін уақыт пен ресурстар жоқ.
Кірістіру сұрыптауы ең қарапайым сұрыптау алгоритмдерінің бірі болып табылады, бірақ ол үлкен тізімдер үшін баяу болуы мүмкін.
Оңай енгізу және түсіну бұл әдісті бағдарламашылар арасында сүйікті етіп жасады. Бұл шағын тізімдер үшін немесе жылдам шешім қажет болғанда өте қолайлы.
Бұл блог жазбасында біз кірістіруді сұрыптаудың уақыт күрделілігін қарастырамыз. Бұл алгоритм массивтерді сұрыптау үшін пайдаланылады және оның орындалу уақыты O(n2). Бұл уақыт күрделілігі массив өлшеміне қарай артады дегенді білдіреді.
Дегенмен, бұл алгоритм жылдам сұрыптау сияқты басқа сұрыптау алгоритмдеріне қарағанда жиірек болуы мүмкін.
Кірістіруді сұрыптау қалай жұмыс істейтінін егжей-тегжейлі қарастырайық!
Кірістіру сұрыптау алгоритмі дегеніміз не?
Бір уақытта бір элемент, кірістіру сұрыптауы жиі тізім деп аталатын сұрыпталатын жиымды жасайды.
Мысалы, сұрыптау компиляторлар сияқты күрделі компьютерлік бағдарламаларда қолданылады, мұнда таңбалауыштардың реті бағдарламаны түсіндіру үшін маңызды.
Кірістіру сұрыптауы қалай жұмыс істейді?
Жиымды сұрыптау үшін кірістіру сұрыптауын пайдаланған кезде, алгоритм тізімдегі ең кіші элементті тауып, оны дұрыс орынға кірістіруден басталады.
Содан кейін ол келесі ең кішкентай элементті тауып, оны дұрыс орынға енгізеді және т.б.
Алгоритм тізімді айналдырып, әрбір элементті өзінен бұрынғы элементпен салыстыру арқылы жұмыс істейді.
Элементтер дұрыс емес тәртіпте болса, алгоритм оларды ауыстырады. Содан кейін ол тізімнің сұрыпталғанын тексереді, ал егер сұрыпталған болса, алгоритм аяқталады.
Іс жүзінде кірістіру сұрыптауы көбінесе кодтың бірнеше жолын қолдану арқылы жүзеге асырылады, бұл оны шағын массивтерді сұрыптау үшін танымал таңдау жасайды. Дегенмен, бұл алгоритмді пайдалану кезінде уақыттың күрделілігін ескеру қажет.
Мысал:
Мұнда кірістіруді сұрыптау жұмысының мысалы берілген. Біз келесі массивді қолданамыз:
1, 2, 3, 4, 5, 6
Алгоритм тізімдегі ең кіші элементті табудан басталады, ол 1. Содан кейін ол оны дұрыс орынға, бірінші орынға кірістіреді. Содан кейін ол келесі ең кішкентай элементті табады, ол 2. Оны дұрыс орынға, яғни екінші орынға кірістіреді.
Содан кейін ол келесі ең кішкентай элементті табады, ол 3. Оны дұрыс орынға, яғни үшінші орынға кірістіреді.
Содан кейін ол келесі ең кішкентай элементті табады, ол 4. Оны дұрыс орынға, яғни төртінші орынға кірістіреді және т.б. Тізім енді сұрыпталды!
Мысалдан біз тізімді сұрыптау үшін алгоритм алты салыстыруды және айырбасты қабылдайтынын көреміз. Себебі ол n қабылдайды2 n элементтің тізімін сұрыптау үшін салыстыру және айырбастау. Бұл жағдайда n=6.
Кірістіруді сұрыптау уақытының күрделілігін қалай жақсартуға болады?
Кірістіру сұрыптауының орындалу уақыты O(n2), оны жылдам сұрыптау сияқты жақсырақ сұрыптау алгоритмін пайдалану арқылы жақсартуға болады.
Quicksort бағдарламасында O(n log n) орындалу уақыты бар, ол O(n) қарағанда жылдамырақ2).
Дегенмен, кейбір жағдайларда кірістіруді сұрыптау жылдам сұрыптаудан жылдамырақ болуы мүмкін.
Мысалы, тізім әлдеқашан реттелген болса, кірістіру сұрыптау жылдам сұрыптауға қарағанда аз уақыт алады.
Іс жүзінде кірістіру сұрыптауы көбінесе кодтың бірнеше жолын қолдану арқылы жүзеге асырылады, бұл оны шағын массивтерді сұрыптау үшін танымал таңдау жасайды.
Дегенмен, бұл алгоритмді пайдалану кезінде уақыттың күрделілігін ескеру қажет.
Уақыт күрделілігі
Ең нашар жағдайдың күрделілігі O(n2):
Уақыттың күрделілігі массив өлшеміне қарай артады. Ол n алады2 n элементтің тізімін сұрыптау үшін салыстыру және айырбастау.
Мысалы, егер бізде 1000 өлшемді массив болса, алгоритм массивді сұрыптау үшін 1,000,000 XNUMX XNUMX салыстыруды және своптарды қабылдайды.
Үздік жағдай күрделілігі O(n):
Уақыттың күрделілігі кіріс массивінің өлшемімен бірдей. I
t n элементтің тізімін сұрыптау үшін n салыстыруды және айырбастауды қабылдайды. Мысалы, 5 өлшемді массивді қарастырыңыз. Алгоритм массивді сұрыптау үшін бес салыстыруды және айырбастауды қажет етеді.
Орташа регистр күрделілігі O(n2):
Уақыттың күрделілігі бұл жағдайда ең нашар және ең жақсы жағдайдың күрделілігі арасында.
Ол n алады2 n элементтің тізімін сұрыптау үшін салыстыру және айырбастау.
Осылайша, кірістіру сұрыптау тұрақты сұрыптау алгоритмі болып табылады.
Неліктен кірістіру сұрыптау тұрақты?
Кірістіру сұрыптауы тұрақты, себебі ол кіріс массивіндегі тең элементтердің ретін сақтайды.
Бұл деректерді іздеу немесе қаржылық талдау сияқты көптеген қолданбалар үшін маңызды. Мысалы, бізде екі сан тізімі болса және оларды салыстырғымыз келсе, элементтердің реті сақталғанына көз жеткізуіміз керек.
Егер тізімдер сұрыпталмаған болса, біз оларды дәл салыстырмаймыз.
пікір қалдыру