【问题标题】:How can I combine shift element function to insertion sort?如何将移位元素功能与插入排序结合起来?
【发布时间】:2019-12-10 16:06:51
【问题描述】:

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

现在我需要将它与插入排序结合起来,但我尝试了但没有成功。 有人可以帮忙吗?谢谢。

【问题讨论】:

  • 请再举一个例子,我仍然没有正确回答问题。比如说,对于 2、3、4、5、6、7 和 i=3,移位后的值是多少?
  • 应该是:2,3,4,5,5,6

标签: java insertion-sort


【解决方案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];
      }
   }

现在,您想通过插入排序对其进行排序吗?

【讨论】:

  • 我被要求不要交换元素,而是像上面提到的那样将它们向右移动
  • 不是swap,我是右移。你可以隐藏“int tmp = arr[i+1];”陈述。一个交换包括三个语句。
猜你喜欢
  • 2023-03-17
  • 2017-01-22
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多