I wybaczcie ,że zadaje takie pytanie , ale jestem w Javie początkującym. Ale chodzi mi o a[j] = ithElement; Jest to instrukcja która jest wykonywana po inner loop. Właśnie czy ona nie powinna być w klamrowych nawiasach podpiętych w pętli i być wykonywana w samej pętli ? Jeżeli instrukcja jest po nawiasach to jest uznana za instrukcje zawsze wykonywaną po pętli.
Mam taki sam kod w Pythonie. I robię tak jak myślę i wszystko działa. O co kaman ?
```class Ideone
{
public static <C extends Comparable<C>> void insertionSort(C[] a) {
for (int i = 1; i < a.length; i++) {
C ithElement = a[i];
int j = i;
for (j = i; j > 0 && ithElement.compareTo(a[j - 1]) < 0; --j) {
a[j] = a[j - 1];
}
a[j] = ithElement;
}
}
public static void main (String[] args) throws java.lang.Exception
{
Integer[] a = {3, 2, 1};
Collections.shuffle(Arrays.asList(a));
System.out.println(Arrays.toString(a));
insertionSort(a);
System.out.println(Arrays.toString(a));
}
}
```python
```def insertion(a):
n = len(a)
i = 1
while i < n:
ithElement = a[i]
j = i
while j > 0 and less(a[j], a[j-1]):
a[j] = a[j-1]
j -= 1
a[j] = ithElement
i += 1
return a