logo

Python programma QuickSort

Tikai maz ticams sapludināt Kārtot , QuickSort ir a sadali un valdi algoritms . Tas izvēlas elementu kā rakursu un sadala doto masīvu ap izvēlēto šarnīra punktu.

Ir daudz dažādu QuickSort versiju, kas izvēlas pagriezienu dažādos veidos.



  1. Vienmēr izvēlieties pirmo elementu kā pagrieziena punktu
  2. Vienmēr izvēlieties pēdējo elementu kā pagrieziena punktu
  3. Izvēlieties izlases elementu kā rakursu
  4. Izvēlieties mediānu kā rakursu

Šeit mēs kā pagrieziena punktu izvēlēsimies pēdējo elementu. QuickSort galvenais process ir partition (). Sadalījumu mērķis ir dots masīvs un masīva elements “x” kā pagrieziena punkts, sakārtotā masīvā novietot x tā pareizajā pozīcijā un visus mazākos elementus (mazākus par x) novietot pirms x, un visus lielākos elementus (lielākus) nekā x) pēc x. Tas viss jādara lineārā laikā.

Python Rekursīva ātrā šķirošana funkciju

// low -->Sākuma indekss, // augsts --> beigu indekss quickSort(arr[], zems, augsts) { // Līdz sākuma indekss ir mazāks par beigu indeksu if (zems // pi ir sadalīšanas indekss, // arr[p] tagad ir pareizajā vietā pi = partition(arr, low, high // Pirms pi quickSort(arr, low, pi - 1) // Pēc pi quickSort(arr, pi + 1, high } }>'>); 

Python3








virknes funkcijas java
# Python program for implementation of Quicksort Sort> # This implementation utilizes pivot as the last element in the nums list> # It has a pointer to keep track of the elements smaller than the pivot> # At the very end of partition() function, the pointer is swapped with the pivot> # to come up with a 'sorted' nums relative to the pivot> # Function to find the partition position> def> partition(array, low, high):> ># choose the rightmost element as pivot> >pivot>=> array[high]> ># pointer for greater element> >i>=> low>-> 1> ># traverse through all elements> ># compare each element with pivot> >for> j>in> range>(low, high):> >if> array[j] <>=> pivot:> ># If element smaller than pivot is found> ># swap it with the greater element pointed by i> >i>=> i>+> 1> ># Swapping element at i with element at j> >(array[i], array[j])>=> (array[j], array[i])> ># Swap the pivot element with the greater element specified by i> >(array[i>+> 1>], array[high])>=> (array[high], array[i>+> 1>])> ># Return the position from where partition is done> >return> i>+> 1> # function to perform quicksort> def> quickSort(array, low, high):> >if> low # Find pivot element such that # element smaller than pivot are on the left # element greater than pivot are on the right pi = partition(array, low, high) # Recursive call on the left of pivot quickSort(array, low, pi - 1) # Recursive call on the right of pivot quickSort(array, pi + 1, high) data = [1, 7, 4, 1, 10, 9, -2] print('Unsorted Array') print(data) size = len(data) quickSort(data, 0, size - 1) print('Sorted Array in Ascending Order:') print(data)>

>

Izvade

masīvs, pievienojot elementus java
Unsorted Array [1, 7, 4, 1, 10, 9, -2] Sorted Array in Ascending Order: [-2, 1, 1, 4, 7, 9, 10]>

Laika sarežģītība: Sliktākajā gadījumā laika sarežģītība ir O(N2) un vidējā gadījuma laika sarežģītība ir O(N log N)
Palīgtelpa: O(1)

Izmantojot Python Quicksort saraksta izpratne

Ātrā kārtošana, izmantojot saraksta izpratni, ir rekursīvs algoritms elementu masīva kārtošanai. Tas darbojas, atlasot šarnīra elementu un sadalot masīvu ap rakursu tā, lai visi elementi, kas ir mazāki par rakursu, tiktu pārvietoti pa kreisi un visi elementi, kas ir lielāki par šarnīra punktu, tiktu pārvietoti pa labi. Pēc tam tas rekursīvi piemēro to pašu procesu kreisajā un labajā apakšmasīvā, līdz tiek sakārtots viss masīvs.

Algoritms:

1. Ja ievades masīva garums ir 0 vai 1, atgrieziet masīvu, kā tas jau ir sakārtots.
2. Izvēlieties pirmo masīva elementu kā pagrieziena elementu.
3. Izveidojiet divus tukšus sarakstus — pa kreisi un pa labi.
4. Katram masīva elementam, izņemot rakursu:
a. Ja elements ir mazāks par pivot, pievienojiet to kreisajam sarakstam.
b. Ja elements ir lielāks vai vienāds ar rakursu, pievienojiet to labajam sarakstam.
5. Rekursīvi izsauciet ātro šķirošanu kreisajā un labajā sarakstā.
6. Savienojiet sakārtoto sarakstu pa kreisi, rakursta elementu un sakārtoto sarakstu pa labi.
7.Atgrieziet sasaistīto sarakstu.

Python3




# Approach 2: Quicksort using list comprehension> def> quicksort(arr):> >if> len>(arr) <>=> 1>:> >return> arr> >else>:> >pivot>=> arr[>0>]> >left>=> [x>for> x>in> arr[>1>:]>if> x right = [x for x in arr[1:] if x>= pivot] return quicksort(pa kreisi) + [rakurs] + ātrā kārtošana(pa labi) # Lietošanas piemērs arr = [1, 7, 4, 1, 10, 9, -2] sorted_arr = quicksort(arr) print('Sorted Array augošā secībā:') print(sorted_arr)>

javascript if paziņojums

>

>

Izvade

Sorted Array in Ascending Order: [-2, 1, 1, 4, 7, 9, 10]>

Laika sarežģītība ir O(n log n)

Algoritma telpas sarežģītība ir O(n)