logo

Програма Python для QuickSort

Просто малоймовірно об'єднати Сортувати , QuickSort — це a розділяй і володарюй алгоритм . Він вибирає елемент як опору та розбиває заданий масив навколо вибраної опори.

Існує багато різних версій QuickSort, які вибирають зведення різними способами.

висота зсуву
  1. Завжди вибирайте перший елемент як опору
  2. Завжди вибирайте останній елемент як опору
  3. Виберіть випадковий елемент як опору
  4. Виберіть медіану як опору

Тут ми виберемо останній елемент як опору. Ключовим процесом у QuickSort є partition(). Ціль розділів полягає в тому, що, враховуючи масив і елемент 'x' масиву як опору, помістити x у правильну позицію в сортованому масиві та розмістити всі менші елементи (менші за x) перед x, а також розмістити всі більші елементи (більші ніж x) після x. Все це повинно бути зроблено в лінійний час.



Python Рекурсивне швидке сортування функція

// low -->Початковий індекс, // високий --> Кінцевий індекс quickSort(arr[], low, high) { // Поки початковий індекс буде меншим за кінцевий індекс if (низький // pi – індекс розбиття, // arr[p] зараз у правильному місці pi = partition(arr, low, high); // Перед pi quickSort(arr, low, pi - 1); // Після pi quickSort(arr, pi + 1, high); } }>

Python3




# 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)>

>

>

до рядкового методу java
Вихід

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

Часова складність: Часова складність у найгіршому випадку становить O(N2), а середня складність випадку становить O(N log N)
Допоміжний простір: О(1)

Використання Python Quicksort розуміння списку

Швидке сортування з використанням розуміння списку — це рекурсивний алгоритм для сортування масиву елементів. Він працює шляхом вибору опорного елемента та розбиття масиву навколо опорної точки таким чином, що всі елементи, менші за опорну, переміщуються ліворуч, а всі елементи, більші за опорну, переміщуються праворуч. Потім він рекурсивно застосовує той самий процес до лівого та правого підмасивів, доки весь масив не буде відсортовано.

Алгоритм:

1. Якщо вхідний масив має довжину 0 або 1, поверніть масив, оскільки він уже відсортований.
2. Виберіть перший елемент масиву як опорний.
3. Створіть два порожніх списки, ліворуч і праворуч.
4. Для кожного елемента в масиві, крім опорної точки:
a. Якщо елемент менший за опору, додайте його до лівого списку.
b. Якщо елемент більше або дорівнює опорній точці, додайте його до правого списку.
5. Рекурсивно викликати швидке сортування в лівому та правому списках.
6. Об’єднайте відсортований лівий список, зведений елемент і відсортований правий список.
7.Повернути об’єднаний список.

ой концепція в java

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(left) + [pivot] + quicksort(right) # Приклад використання arr = [1, 7, 4, 1, 10, 9, -2] sorted_arr = quicksort(arr) print('Sorted Array у порядку зростання:') print(sorted_arr)>

>

тестування продуктивності
>

Вихід

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

Часова складність O(n log n)

Просторова складність алгоритму дорівнює O(n)