In: Computer Science
Write a Python module that must satisfy the following-
Define a function named rinsert. This function will accept two arguments, the first a list of items to be sorted and the second an integer value in the range 0 to the length of the list, minus 1. This function shall insert the element corresponding to the second parameter into the presumably sorted list from position 0 to one less than the second parameter’s index.
Define a function named rinsort. This function will accept two arguments, the first a list of items to be sorted and the second an integer value in the range 0 to the length of the list, minus 1. This function shall sort the elements of the list from position 0 to the position corresponding to the second parameter, in ascending order using insertion sort. This function must be recursive.
Answer:
a.) def rinsert(item_list,val):
    item_list.sort()
    # Searching for the position
    for i in range(len(item_list)):
        if item_list[i] > val:
            index = i
            break
    # Inserting n in the list
    item_list = item_list[:i] + [val] + item_list[i:]
    return item_list
item_list=[10,1,23,45,12,3,5,8,24,77,16]
val=int(input("Enter an integer value (0 to len(item_list)-1): "))
if val not in range(0,len(item_list)-1):
    print("Please enter a value within the specified range")
    val = int(input("Enter an integer value (0 to len(item_list)-1: "))
print("Sorted List after insertion: ",rinsert(item_list,val))
Output:

b.) def rinsort(item_list,val):
    # base case
    if val <= 1:
        return
    # Sort first n-1 elements
    rinsort(item_list, val - 1)
    #Insert last element at its correct position in sorted array
    last = item_list[val - 1]
    j = val - 2
    # Move elements of arr[0..i-1], that are
    # greater than key, to one position ahead
    # of their current position
    while (j >= 0 and item_list[j] > last):
        item_list[j + 1] = item_list[j]
        j = j - 1
    item_list[j + 1] = last
    return item_list
item_list=[10,1,23,45,12,3,5,8,24,77,16]
print("List before insertion sort: ",item_list)
print("List after insertion sort: ",rinsort(item_list,len(item_list)))
Output:
