В следующем коде, реализующем сортировку вставкой, он полностью прерывается при замене currentElement
на nums[i]
(во втором для l oop). Насколько я могу судить, i
не меняется до следующей итерации. Даже печать i
и currentElement
в пределах секунды для l oop показывает, что они все время одинаковы.
Что происходит не так при использовании nums[i]
?
public class InsertionSort {
4 public static void main(String[] args){
5 int[] nums = {23,4,5234,1234,3,2,0,-44, -1239};
6 sort(nums);
7
8 for (int i : nums) {
9 System.out.println(i);
10 }
11
12 }
13
14
15 public static void sort(int[] nums) {
16 for (int i = 1; i < nums.length; i++) {
17 int currentElement = nums[i];
18 int j;
19 for (j = i - 1; j >= 0 && nums[j] > currentElement; j--) {
20 nums[j + 1] = nums[j];
21 }
22 nums[j + 1] = currentElement;
23 }
24 }
25 }
Если это имеет значение, результаты сортируются естественным образом для currentElement
, а при использовании nums[i]
он был отсортирован следующим образом: 4, 23, 1234, 3, 2, 0, -44, -1239, 5234.