一段代码中i = -1的相关性

GB:

我正在研究一段代码,遇到了“ i = -1”,因此我无法弄清它在场景中的重要性。

代码的重点是将数组从最小到最大排序,并找出最大和最小数字之间的差。

public int bigDiff(int[] nums) {
  int answer = 0;
  for (int i = 0; i < nums.length - 1; i++){
    if (nums[i] > nums[i + 1]){
      int temp = nums[i];
      nums[i] = nums[i + 1];
      nums[i + 1] = temp;
      i = -1;
    }
  }
  return (nums[nums.length - 1] - nums[0]);

}

提前致谢!

Pepperjack:

这是冒泡排序的实现。i=-1;如果发现排序不正确,则将循环重置为开始。它是-1而不是0,因为i++在for循环的末尾,对于数组的开头,它将迭代返回0。如果不这样做,它只会通过一次,并且可能会错过顺序错误的事物。在这里阅读有关内容:http : //www.geeksforgeeks.org/bubble-sort/

冒泡排序看起来像这样(在此代码中):

第一遍:[0] [3] [3] [1]第二个3和1被交换,迭代器回到起点

第二遍:[0] [3] [1] [3]前3和1被交换

第三遍:[0] [1] [3] [3]不需要做任何事情

如果只通过了一次,这是行不通的。因此,它将重置自身,以便可以再次通过。

(而且我应该注意,如评论中所述,气泡排序首先是效率低下的,并且由于此实现在每次遇到问题时都会对其进行重置,因此效率甚至更低。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章