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