Ваш код уже делает то, что вы ищете. Поскольку j повторяется до длины i, он увеличивается на единицу каждый раз. Я думаю, что вы сбиты с толку, потому что ваш код фактически реализует его в обратном направлении от вашего английского в вопросе;)
Вот пример массива и модификации, которые будут сделаны на каждой итерации. Круглые скобки обозначают, какая часть массива проверяется на каждой итерации:
(7)5 3 8 6 9 4 2 0 1
(7 5)3 8 6 9 4 2 0 1
(7 5 3)8 6 9 4 2 0 1
(8 7 5 3)6 9 4 2 0 1
(8 7 6 5 3)9 4 2 0 1
(9 8 7 6 5 3)4 2 0 1
(9 8 7 6 5 4 3)2 0 1
(9 8 7 6 5 4 3 2)0 1
(9 8 7 6 5 4 3 2 0)1
(9 8 7 6 5 4 3 2 1 0)
Как вы можете видеть в первый раз, когда на самом деле ничего не сделано, и никогда не будет, потому что вы сравниваете один элемент с самим собой. Во второй раз вы теперь сравниваете два элемента, затем три, и так далее.
Чтобы ваш код начинал со сравнения их всех, а затем каждый раз делал на единицу меньше (как говорится в вашем вопросе), вы должны изменить цикл на следующее (примечание j <10-i): </p>
for(int i=0;i<10;i++)
{
for(int j=0;j<10-i;j++)
{
В любом случае это равноценно и будет работать в конце. Далее вы можете пропустить первое сравнение с самим собой, установив i = 1:
for(int i=1;i<10;i++)
{
for(int j=0;j<10-i;j++)
{
Это исключит первое сравнение, которое вы искали. Это еще одна оптимизация.