📌  相关文章
📜  国际空间研究组织 | ISRO CS 2007 |问题 38(1)

📅  最后修改于: 2023-12-03 15:07:33.240000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2007 | 问题 38

这是一道关于排序算法的题目,要求使用插入排序对一组给定的数字进行排序。

题目描述

给定一组数字,请使用插入排序进行排序,并输出排序后的结果。

输入格式

第一行是一个整数 T,表示测试用例的数量。

对于每个测试用例,第一行是一个整数 N,表示数字的数量。接下来一行是 N 个数字,用空格隔开。

输出格式

对于每个测试用例,输出一行表示排序后的数字,用空格隔开。

样例输入
2
5
3 2 1 5 4
3
1 2 3
样例输出
1 2 3 4 5
1 2 3
解题思路

插入排序是通过构建有序序列,对于未排序的数据,在已排序的序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,每次插入新的元素时,要将插入点后的所有元素后移一位。

代码实现
def insertion_sort(arr):
    for i in range(1, len(arr)):
        key = arr[i]
        j = i - 1
        while j >= 0 and arr[j] > key:
            arr[j + 1] = arr[j]
            j = j - 1
        arr[j + 1] = key
    return arr

t = int(input())
for i in range(t):
    n = int(input())
    arr = list(map(int, input().split()))
    sorted_arr = insertion_sort(arr)
    print(*sorted_arr)

注:以上代码为 Python 实现,使用了 tsingwong 大佬的插入排序实现方式。