Све што треба да знате о Куицксорт-у на Ц ++



Овај чланак ће вам пружити детаљно и свеобухватно знање о примени Куицксорт-а у Ц ++ са примерима.

Постоји мноштво алгоритама за сортирање. Проналажење одговарајуће примене за вашу апликацију је задатак који захтева кратко разумевање фактора као што су перформансе, временска сложеност, дужина кода итд. Одређеног алгоритма. У овом посту ћемо погледати све основне концепте потребне за примену Куицксорт-а у Ц ++ следећим редоследом:

Разумевање алгоритма брзог сортирања

Баш као Сортирање спајањем , Куицксорт следи стратегију подели и освоји. Користећи стратегију завади и победи, поделимо проблем на многе потпроблеме и решавамо их рекурзивно. Прво ћемо корак по корак разумети цео процес, а након тога ћемо уз помоћ примера развити дубоко разумевање целог процеса.





  1. Прво ћемо од корисника тражити несортирани низ.

  2. Једном када добијемо наш несортирани низ, треба да изаберемо пивот вредност из низа. Можемо одабрати било коју вредност.



  3. Једном када изаберемо тачку вешања након тога треба да распоредимо остале елементе низа на такав начин да сви елементи мањи од вредности пивота буду постављени десно од вредности пивота и сви елементи већи од пивота вредност треба поставити десно од пивот вредности.

  4. Изводимо корак 3 док не добијемо наш сортирани низ.

Хајде да размотримо пример и применимо алгоритам и видимо како он функционише.



Здраво [5, 4, 1, 11, 9, 6, 2, 3] за овај пример увек ћемо пивот сматрати најдеснијим елементом листе.

Брзи сортирање у Ц ++

Прођимо кроз сваки корак и схватимо логику коју смо користили за решавање проблема.

питхон деф __инит__
  • Прво смо изабрали „3“ као стожер и распоредили све елементе мање од „3“ удесно, а све елементе веће од „3“ удесно.

  • У овом тренутку имамо 2 потпроблема. Прво решимо потпроблем с десне стране. Изабрали смо једног за наш стожер и ставили „2“ удесно.

  • Да бисмо решили други потпроблем, одабиремо „6“ као свој осовински положај и постављамо елементе као што смо раније говорили.

  • Имамо још 2 потпроблема. Прва се решава избором 4 као осовине, а друга се решава избором 9 као осовине. Коначно, имамо наш сортирани низ са елементима смештеним у индекс подвлачења.

Белешка- Овде је важно схватити да се све операције одвијају у истом низу. Нови низови се не креирају.

Псеудоцоде за Куицксорт у Ц ++

КуицкСорт (низ [], старт_индек, енд_индек) {иф (старт_индек

Програм брзог сортирања на језику Ц ++

Разумели смо алгоритам и развили дубоко разумевање рада алгоритма. Имплементирајмо Куицксорт у Ц ++ и напишимо програм за сортирање низа.

#инцлуде усинг намеспаце стд воид свап_елементс (инт * а, инт * б) {инт темп = * а * а = * б * б = темп} инт партиција (инт низ [], инт старт_индек, инт енд_индек) {инт пивот = низ [енд_индек] инт и = (старт_индек - 1) за (инт ј = старт_индек ј<= end_index- 1 j++) { if (array[j] <= pivot) { i++ swap_elements(&array[i], &array[j]) } } swap_elements(&array[i + 1], &array[end_index]) return (i + 1) } void quickSort(int array[], int start_index, int end_index) { if (start_index < end_index) { int partition_index = partition(array, start_index, end_index) quickSort(array, start_index, partition_index - 1) quickSort(array, partition_index + 1, end_index) } } void printArray(int array[], int number) { int i cout<<'Sorted Array: ' for (i = 0 i < number i++) cout << array[i] << ' ' cout << endl } int main() { int Hello[30] int i int NumberofElements cout<>Трошак НумберофЕлементс<<'Enter the elements one by one: ' for(i=0i>Здраво [и]} куицкСорт (Хелло, 0, НумберофЕлементс-1) принтАрраи (Хелло, НумберофЕлементс) ретурн 0}

Излаз:

Сложеност времена

Разговарајмо о најважнијем аспекту било ког алгоритма за сортирање, тј. О временској сложености. Говори нам о перформансама алгоритма у различитим сценаријима. Ове вредности нам могу помоћи у одлуци да ли можемо да користимо овај алгоритам за нашу апликацију.

  • Најбољи случај- На)
  • Просечан случај- (нлогн)
  • Најгори случај- На2)

Овим смо дошли до краја овог чланка Куицксорт ин Ц ++. Ако желите да сазнате више, погледајте Едурека, поуздана компанија за учење на мрежи. Едурекин курс за обуку и сертификацију Јава Ј2ЕЕ и СОА осмишљен је тако да вас оспособи за основне и напредне Јава концепте заједно са разним Јава оквирима попут Хибернате & Спринг.

Имате питање за нас? Молимо вас да га спомињете у одељку за коментаре овог блога и јавићемо вам се што је пре могуће.