在这里给出的问题中,我必须计算总数。使用插入排序对数组进行排序时所需的交换次数。
这是我的方法
#include <stdio.h>
int main()
{
int t, N, swaps, temp, i, j;
scanf("%d", &t);
while(t--){
scanf("%d", &N);
int arr[N];
swaps = 0;
for(i=0; i<N; ++i){
scanf("%d", &temp);
j=i;
while(j>0 && arr[j-1] > temp){
arr[j] = arr[j-1];
++swaps;
--j;
}
arr[j] = temp;
}
printf("%d\n", swaps);
}
return 0;
}
但是,这个解决方案超出了时间限制。
我怎样才能让它更快?
并且,这个问题的其他更好的解决方案是什么?