Python Program to Implement Binary Insertion Sort

01. Example:

def binaryInsertionSort(data):
    for i in range(1, len(data)):
        temp = data[i]
        pos = binarySearch(data, temp, 0, i) + 1
 
        for k in range(i, pos, -1):
            data[k] = data[k - 1]
 
        data[pos] = temp
 
def binarySearch(data, key, start, end):
    if end - start <= 1:
        if key < data[start]:
            return start - 1
        else:
            return start
 
    mid = (start + end)//2
    if data[mid] < key:
        return binarySearch(data, key, mid, end)
    elif data[mid] > key:
        return binarySearch(data, key, start, mid)
    else:
        return mid
 
 
list01 = input('Enter the list of numbers: ').split()
list01 = [int(x) for x in list01]

binaryInsertionSort(list01)
print('Sorted list: ', end='')
print(list01)

Output:

Enter the list of numbers: 320 420 140 500 185 60 200 80 10 100
Sorted list: [10, 60, 80, 100, 140, 185, 200, 320, 420, 500]

Leave a comment