n = int(input())
a = list(map(int, input().split()) )
def insertion_sort(arr):
# 遍历数组,从第二个元素开始
for i in range(1, len(arr)):
key = arr[i]
# 将当前元素与已排序部分比较并插入正确的位置
j = i - 1
while j >= 0 and key < arr[j]:
arr[j + 1] ,arr[j] = arr[j ] ,arr[j+1]
j -= 1
arr[j + 1] = key
def binary_insertion_sort(arr):
for i in range(1, len(arr)):
current_value = arr[i]
# 二分搜索找到插入位置
low, high = 0, i - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] > current_value:
high = mid - 1
else:
low = mid + 1
# 移动元素以插入当前值
for j in range(i - 1, low - 1, -1):
arr[j + 1] = arr[j]
arr[low] = current_value
binary_insertion_sort(a)
print(' '.join([str(i) for i in a]))
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com