我有一个问题:我被要求编写一个与插入排序有关的函数。通过给出一个数字,该函数会将下一个i值向右移动,并注意“ i值”的最后一个值将被上一个i值超出。例如:9,8,7,6,5且数字为i = 2:将变为:9,8,7,7,6而5超过了。
到目前为止,这是我编写的代码:
public static void shift(int [] arr, int i) {
if(i < arr.length / 2) {
for(int j = i + i; j > i; j--) {
arr[j] = arr[j - 1];
}
}
else {
for(int j = arr.length - 1; j > i; j--) {
arr[j] = arr[j - 1];
}
}
}
现在,我需要将其与插入排序结合使用,但尝试失败。有人可以帮忙吗?谢谢。
我到目前为止所得到的,我可能是错的,在这种情况下,请发表评论以便我可以纠正。
public static void shift(int [] arr, int i)
{
if(i <= arr.length-2) // when i > (arr.length-2) shifting doesn't make any effect
{
int tmp = arr[i+1]; // tmp will hold the overwritten element for future use.
arr[i+1] = arr[i];
}
}
现在,您要按插入排序对其进行排序吗?