Алгоритмы сортировки в Python |
||
|
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2023-01-18 15:03 Содержание
Что такое сортировка Сортировка – упорядочивание списка элементов данных в заранее определенной последовательности Существует множество типов алгоритмов сортировки: поразрядная, быстрая, пирамидальная, слиянием, пузырьком, Шеллаи т.д. Ни один из них не может считаться самым быстрым, поскольку каждый алгоритм предназначен для определенной структуры данных и набора данных. Это зависит от того, какой набор данных вы хотите отсортировать. 1. Сортировка вставками При сортировке вставкой вы сравниваете ключевой элемент с предыдущими элементами. Если предыдущие элементы больше, чем ключевой элемент, то вы перемещаете предыдущий элемент на следующую позицию. def insertion_sort(arr): ''' insertion sort function that takes an array to be sorted as an input. With your key element at the index 1 of the input array, traverse the array comparing the key element with the previous elements. If the previous element is greater than the key element, then move the previous element to the next position ''' l = len(arr) i=1 #key element index while i<l: key_element=arr[i] j=i-1 #previous element index while j>=0 and arr[j]>key_element: # Move elements of arr[0..i-1], that are # greater than key, to one position ahead # of their current position arr[j+1] = arr[j] j=j-1 arr[j+1]=key_element i=i+1 return arr Свойства сортировки вставками
![]() 2. Сортировка выбором Сортировка выбором берет текущий наименьший элемент и меняет его местами. Вот как это работает:
def selection_sort(alist): for i in range(0, len(alist) - 1): smallest = i for j in range(i + 1, len(alist)): if alist[j] < alist[smallest]: smallest = j alist[i], alist[smallest] = alist[smallest], alist[i] return alist Свойства сортировки выбором
![]() 3. Сортировка пузырьком Алгоритм обходит список и сравнивает соседние значения, меняя их местами, если они расположены в неправильном порядке. def bubble_sort(alist): n=len(alist) for i in range(n): for j in range(i): if alist[j]>alist[j+1]: temp = alist[j] alist[j] = alist[j+1] alist[j+1] = temp return alist Плюсы
Минусы
Свойства сортировки пузырьком
![]() 4. Быстрая сортировка Быстрая сортировка использует подход “разделяй и властвуй”. Она делит список на более мелкие “разделы” с помощью “стержня”. Значения, которые меньше стержня, располагаются в левом разделе, а большие значения располагаются в правом разделе. Каждый раздел рекурсивно сортируется с помощью быстрой сортировки. Быстрая сортировка включает в себя следующие шаги:
def quicksort(z): if(len(z)>1): piv=int(len(z)/2) val=z[piv] lft=[i for i in z if i<val] mid=[i for i in z if i==val] rgt=[i for i in z if i>val] res=quicksort(lft)+mid+quicksort(rgt) return res else: return z Свойства быстрой сортировки
часть 1 ![]() часть 2 ![]() 5. Сортировка слиянием Merge sort – это алгоритм сортировки, основанный на подходе программирования “разделяй и властвуй”. Он продолжает делить список на более мелкие подсписки до тех пор, пока все подсписки не будут содержать только 1 элемент. Затем он объединяет их в отсортированном виде, пока все подсписки не будут заполнены. def merge(left,right,compare): result = [] i,j = 0,0 while (i < len(left) and j < len(right)): if compare(left[i],right[j]): result.append(left[i]) i += 1 else: result.append(right[j]) j += 1 while (i < len(left)): result.append(left[i]) i += 1 while (j < len(right)): result.append(right[j]) j += 1 return result def merge_sort(arr, compare = lambda x, y: x < y): #Used lambda function to sort array in both(increasing and decresing) order. #By default it sorts array in increasing order if len(arr) < 2: return arr[:] else: middle = len(arr) // 2 left = merge_sort(arr[:middle], compare) right = merge_sort(arr[middle:], compare) return merge(left, right, compare) Свойства сортировки слиянием
![]() Сложности алгоритмов сортировки ![]() Источник: itmozg.ru Комментарии: |
|