如何将移位元素功能与插入排序相结合?



我有一个问题:我被要求编写一个与插入排序相关的函数。通过给出一个数字,函数会将下一个 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];
}
}

现在,您要按插入排序对其进行排序吗?

最新更新