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