No se si podrias poner todo el codigo completo, con el main osea todo el codigo fuente del programilla, para explicarlo mejor tipo una prueba de escritorio, aunque mejor seria en vivo y en directo
.
Lo que te puedo decir es que:
1er. for( int i = 0; i < a.length; i++) //antes que se se ejecute la i++ pasa a:
2do. for( int j = i; j < a.length; j++) //antes que se ejecute la j++ pasa a :
3er. for (int k = i; k <= j; k++)
/*3er.for (int k = i; k <= j; k++) aca si esta bucle se realiza normal como si fuera un for independiente claro hata que la condición k<=j(k<=0) sea falsa, una vez terminada este bucle, recien se realiza el incremento de j++ se vuelve a:
2do for ( int j = 1; j < a.length; j++) si j<a.lenght es verdad se pasa al 3er for
3er. for (int k = i; k <= j; k++) aca si esta bucle se realiza normal como si fuera un for independiente claro hata que la condición k<=j(k<=1) sea falsa, una vez terminada este bucle, recien se realiza el incremento de j++ se vuelve a:
2do for( int j = 2; j < a.length; j++) si j<a.lenght es verdad se pasa al 3er for
y se vuelve a repetir la secuencia .....
esto sigue hasta que j < a.length sea falsa, una vez comprobada su falsedad recien se realiza el incremento de i++
y se pasa al primer 1er for( int i = 1; i < a.length; i++)
volvemos hacer lo mismo osea :
***********************************
1er. for( int i = 0; i < a.length; i++) //antes que se se ejecute la i++ pasa a:
2do. for( int j = i; j < a.length; j++) //antes que se ejecute la j++ pasa a :
3er. for (int k = i; k <= j; k++)
/*3er.for (int k = i; k <= j; k++) aca si esta bucle se realiza normal como si fuera un for independiente claro hata que la condición k<=j(k<=0) sea falsa, una vez terminada este bucle, recien se realiza el incremento de j++ se vuelve a:
2do for ( int j = 1; j < a.length; j++) si j<a.lenght es verdad se pasa al 3er for
3er. for (int k = i; k <= j; k++) aca si esta bucle se realiza normal como si fuera un for independiente claro hata que la condición k<=j(k<=1) sea falsa, una vez terminada este bucle, recien se realiza el incremento de j++ se vuelve a:
2do for( int j = 2; j < a.length; j++) si j<a.lenght es verdad se pasa al 3er for
y se vuelve a repetir la secuencia .....
esto sigue hasta que j < a.length sea falsa, una vez comprobada su falsedad recien se realiza el incremento de i++
y se pasa al primer 1er for( int i = 1; i < a.length; i++)
***************************************************
y esto acabara cuando en: for( int i = 0; i < a.length; i++) la condición i < a.length sea falsa.
no se si me deje entender algo despues de tanto palabreo, a ver si me pasas todo el programa completo y te lo explicaria con un ejemplo haciendo una prueba de escritorio