问题:数组排序
插入排序,向已经有序一组序列中,插入一个新的元素
默认第一个列表元素为已经排序好的元素,从第二个元素进行比较,
已经排序好的元素,重大到小,依次进行比较,最后得到结果
import traceback
def insert_sort(wait_sort_data: list, reverse=True):
"""
插入排序的实现
:param wait_sort_data: 待排序的列表数据
:param reverse: 是否反序操作
:return:
"""
try:
if not wait_sort_data:
raise Exception('当前要排序的列表为空,请检查')
if reverse:
for index in range(1, len(wait_sort_data)):
key = wait_sort_data[index]
upper_index = index - 1
while upper_index >= 0 and wait_sort_data[upper_index] > key:
wait_sort_data[upper_index + 1] = wait_sort_data[upper_index]
upper_index -= 1
wait_sort_data[upper_index + 1] = key
else:
for index in range(len(wait_sort_data) - 2, -1, -1):
key = wait_sort_data[index]
after_index = index + 1
while after_index < len(wait_sort_data) and wait_sort_data[after_index] > key:
wait_sort_data[after_index - 1] = wait_sort_data[after_index]
after_index += 1
wait_sort_data[after_index - 1] = key
return wait_sort_data
except Exception as e:
if str(e).count('请检查'):
raise e
raise Exception(str(e) + '插入排序实现发生异常,原因:{}'.format(traceback.format_exc()))
if __name__ == "__main__":
new_data = insert_sort([1, 500, 487, 0, 792, 12, 654, 438, 78, -123, -345], reverse=False)
print(new_data)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)