问题描述:
在插入排序算法中,在插入元素A[i]时,用二分查找替代顺序查找,给出该算法的程序,并计算该算法在最坏情况下的时间复杂度。
代码如下:
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 20 10:05:58 2022
@author: Dell
"""
import time
def insert_sort(ary):
count = len(ary)
for i in range(1, count):
mark = ary[i];
key = i-1
l = 0
while l <= key : #开始二分查找
m = (l + key) >> 1
if ary[m] < mark :
l = m + 1
else :
key = m - 1
for j in range(i-1,1):
ary[j+1] = ary[j]
ary[l] = mark
return ary
if __name__ =='__main__':
input_list = [5, 13, 23, 17, 9, 3, 0, 2, 11, 10]
print('排序前:',input_list)
t = time.perf_counter()
sorted_list = insert_sort(input_list)
print('插入排序后:', sorted_list)
print(f'cost:{time.perf_counter() - t:.8f}s')