问题遇到的现象和发生背景
如图所示,插入排序类似于玩扑克时抓牌的过程,玩家每拿到一张牌都要插入到手中已有的牌里,使之从小到大排好序。
现使用一个排好序的数组模拟插入排序,即输入一数时,要求按原来排序的规律将它插入数组中。
https://citel.bjtu.edu.cn/moodle/images/insertsort.png
输入:
输入共三行,第一行为数字N(N≤100000),表示原数组元素的个数。第二行为N个数字,即原数组的各元素值。第三行为一个数字,即输入的数。
输出:
输出一行,即排好序的数组,以空格间隔。
示例输入:
10
1 2 3 4 5 6 7 8 9 10
11
示例输出:
1 2 3 4 5 6 7 8 9 10 11
我写的代码时间超出限制,应如何修改
用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
int main()
{
int n, m,t;
long long int a[100009];
scanf_s("%d", &n);
for (int i =0; i < n; i++)
{
scanf_s("%lld", &a[i]);
}
scanf_s("%d", &m);
a[n] = m;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n - i; j++)
{
if (a[j]>a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
for (int i = 0; i <= n; i++)
{
printf("%lld ", a[i]);
}
return 0;
}
运行结果及报错内容
我的解答思路和尝试过的方法
超出时间限制,应如何处理?