Python 二分插入排序程序
本文将介绍针对以下问题陈述提出的解决方案。
问题陈述 − 已有一个数组,我们需要使用二分插入排序的概念对其进行排序。
正如名称所示,我们结合了二分搜索和插入排序算法的概念。
下面让我们观察一下实现中的解决方案 −
示例
# sort def insertion_sort(arr): for i in range(1, len(arr)): temp = arr[i] pos = binary_search(arr, temp, 0, i) + 1 for k in range(i, pos, -1): arr[k] = arr[k - 1] arr[pos] = temp def binary_search(arr, key, start, end): #key if end - start <= 1: if key < arr[start]: return start - 1 else: return start mid = (start + end)//2 if arr[mid] < key: return binary_search(arr, key, mid, end) elif arr[mid] > key: return binary_search(arr, key, start, mid) else: return mid # main arr = [1,5,3,4,8,6,3,4] n = len(arr) insertion_sort(arr) print("Sorted array is:") for i in range(n): print(arr[i],end=" ")
输出
Sorted array is : 1 3 3 4 4 5 5 6 8
所有的变量都在本地范围内声明,其引用在上图中可以看到。
结论
本文介绍了如何编写 Python 二分插入排序程序。
广告