Рубрики

Программа Python для сортировки бинарных вставок

Мы можем использовать бинарный поиск, чтобы уменьшить количество сравнений в обычной сортировке вставкой . Бинарная сортировка вставки find использует бинарный поиск, чтобы найти правильное местоположение для вставки выбранного элемента на каждой итерации.
При обычной вставке сортировка занимает O (i) (на i-й итерации) в худшем случае. мы можем уменьшить его до O (logi), используя бинарный поиск .

питон

# Реализация программы Python
# двоичного типа вставки

  

def binary_search(arr, val, start, end):

    # мы должны различать, должны ли мы вставить

    # до или после левой границы.

    # представьте [0] - последний шаг бинарного поиска

    # и нам нужно решить, куда вставить -1

    if start == end:

        if arr[start] > val:

            return start

        else:

            return start+1

  

    # это происходит, если мы движемся за левую границу

    # означает, что левая граница является наименьшей позицией для

    # найти число больше чем val

    if start > end:

        return start

  

    mid = (start+end)/2

    if arr[mid] < val:

        return binary_search(arr, val, mid+1, end)

    elif arr[mid] > val:

        return binary_search(arr, val, start, mid-1)

    else:

        return mid

  

def insertion_sort(arr):

    for i in xrange(1, len(arr)):

        val = arr[i]

        j = binary_search(arr, val, 0, i-1)

        arr = arr[:j] + [val] + arr[j:i] + arr[i+1:]

    return arr

  

print("Sorted array:")

print insertion_sort([37, 23, 0, 17, 12, 72, 31,

                        46, 100, 88, 54])

  
# Код предоставлен Mohit Gupta_OMG

Пожалуйста, обратитесь к полной статье о бинарной сортировке для более подробной информации!

Рекомендуемые посты:

Программа Python для сортировки бинарных вставок

0.00 (0%) 0 votes