3 added 40 characters in body

# Java 8, 182179179 177 bytes

import java.util.*;l->{List r=new VectorStack(),t;for(int p,i,x;l.size()>0;)for(p=l.get(0),r.add(t=new VectorStack()),i=0;i<l.size();p=x)if((x=l.get(i++))>=p)t.add(l.remove(--i));return r;}


-3 bytes thanks to @Nevay.
-2 bytes by using Stack instead of Vector.

import java.util.*;             // Required import for List and Vector
l->{                            // Method with ArrayList<Integer> parameter and List return-type
List r=new VectorStack(),          //  Return-List
t;                       //  Temp-List
for(int p,i,x;                //  Some temp integers
l.size()>0;)              //  Loop (1) as long as there are still items left in the list
for(p=l.get(0),             //   Set p to the first item of the list
i=0;i<l.size();         //   Inner loop (2) from 0 to the size of the list (exclusive)
p=x)                   //     After every iteration, save the previous value in p
if((x=l.get(i++))>=p)     //    If the current item is equal or larger than the previous:
t.add(l.remove(--i));   //     Add it to the temp-List, and remove it from the input-List
//   End of inner loop (2) (implicit / single-line body)
//  End of loop (1) (implicit / single-line body)
return r;                     //  Return result-List
}                               // End of method


# Java 8, 182179 bytes

import java.util.*;l->{List r=new Vector(),t;for(int p,i,x;l.size()>0;)for(p=l.get(0),r.add(t=new Vector()),i=0;i<l.size();p=x)if((x=l.get(i++))>=p)t.add(l.remove(--i));return r;}


-3 bytes thanks to @Nevay.

Try it here.

import java.util.*;             // Required import for List and Vector
l->{                            // Method with ArrayList<Integer> parameter and List return-type
List r=new Vector(),          //  Return-List
t;                       //  Temp-List
for(int p,i,x;                //  Some temp integers
l.size()>0;)              //  Loop (1) as long as there are still items left in the list
for(p=l.get(0),             //   Set p to the first item of the list
i=0;i<l.size();         //   Inner loop (2) from 0 to the size of the list (exclusive)
p=x)                   //     After every iteration, save the previous value in p
if((x=l.get(i++))>=p)     //    If the current item is equal or larger than the previous:
t.add(l.remove(--i));   //     Add it to the temp-List, and remove it from the input-List
//   End of inner loop (2) (implicit / single-line body)
//  End of loop (1) (implicit / single-line body)
return r;                     //  Return result-List
}                               // End of method


# Java 8, 182179 177 bytes

import java.util.*;l->{List r=new Stack(),t;for(int p,i,x;l.size()>0;)for(p=l.get(0),r.add(t=new Stack()),i=0;i<l.size();p=x)if((x=l.get(i++))>=p)t.add(l.remove(--i));return r;}


-3 bytes thanks to @Nevay.
-2 bytes by using Stack instead of Vector.

Try it here.

import java.util.*;            // Required import for List and Vector
l->{                           // Method with ArrayList<Integer> parameter and List return-type
List r=new Stack(),          //  Return-List
t;                      //  Temp-List
for(int p,i,x;               //  Some temp integers
l.size()>0;)             //  Loop (1) as long as there are still items left in the list
for(p=l.get(0),            //   Set p to the first item of the list
i=0;i<l.size();        //   Inner loop (2) from 0 to the size of the list (exclusive)
p=x)                  //     After every iteration, save the previous value in p
if((x=l.get(i++))>=p)    //    If the current item is equal or larger than the previous:
t.add(l.remove(--i));  //     Add it to the temp-List, and remove it from the input-List
//   End of inner loop (2) (implicit / single-line body)
//  End of loop (1) (implicit / single-line body)
return r;                    //  Return result-List
}                              // End of method

2 -3 bytes

# Java 8, 182182 179 bytes

import java.util.*;l->{List r=new Vector(),t;for(int p,i,x;l.size()>0;){for(p=l.get(0);r,r.add(t=new Vector());for(i=-1;++i<l,i=0;i<l.size();p=x)if((x=l.get(ii++))>=p)t.add(l.remove(i--i));}return;return r;}


-3 bytes thanks to @Nevay.

import java.util.*;             // Required import for List and Vector
l->{                            // Method with ArrayList<Integer> parameter and List return-type
List r=new Vector(),          //  Return-List
t;                       //  Temp-List
for(int p,i,x;                //  Some temp integers
l.size()>0;){              //  Loop (1) as long as there are still items left in the list
for(p=l.get(0);   ,             //   Set p to the first item of the list
r.add(t=new Vector());   ,  //   Add a new inner List to the result-List
for(i=-1;++i<l    i=0;i<l.size();         //   Inner loop (2) from 0 to the size of the list (exclusive)
p=x)                   //     After every iteration, save the previous value in p
if((x=l.get(ii++))>=p)      //    If the current item is equal or larger than the previous:
t.add(l.remove(i--i));   //     Add it to the temp-List, and remove it from the input-List
//   End of inner loop (2) (implicit / single-line body)
}                              //  End of loop (1) (implicit / single-line body)
return r;                     //  Return result-List
}                               // End of method


# Java 8, 182 bytes

import java.util.*;l->{List r=new Vector(),t;for(int p,i,x;l.size()>0;){p=l.get(0);r.add(t=new Vector());for(i=-1;++i<l.size();p=x)if((x=l.get(i))>=p)t.add(l.remove(i--));}return r;}


Try it here.

import java.util.*;            // Required import for List and Vector
l->{                           // Method with ArrayList<Integer> parameter and List return-type
List r=new Vector(),         //  Return-List
t;                      //  Temp-List
for(int p,i,x;               //  Some temp integers
l.size()>0;){            //  Loop (1) as long as there are still items left in the list
p=l.get(0);                //   Set p to the first item of the list
for(i=-1;++i<l.size();     //   Inner loop (2) from 0 to the size of the list (exclusive)
p=x)                   //     After every iteration, save the previous value in p
if((x=l.get(i))>=p)      //    If the current item is equal or larger than the previous:
t.add(l.remove(i--));  //     Add it to the temp-List, and remove it from the input-List
//   End of inner loop (2) (implicit / single-line body)
}                            //  End of loop (1)
return r;                    //  Return result-List
}                              // End of method


# Java 8, 182 179 bytes

import java.util.*;l->{List r=new Vector(),t;for(int p,i,x;l.size()>0;)for(p=l.get(0),r.add(t=new Vector()),i=0;i<l.size();p=x)if((x=l.get(i++))>=p)t.add(l.remove(--i));return r;}


-3 bytes thanks to @Nevay.

Try it here.

import java.util.*;             // Required import for List and Vector
l->{                            // Method with ArrayList<Integer> parameter and List return-type
List r=new Vector(),          //  Return-List
t;                       //  Temp-List
for(int p,i,x;                //  Some temp integers
l.size()>0;)              //  Loop (1) as long as there are still items left in the list
for(p=l.get(0),             //   Set p to the first item of the list
i=0;i<l.size();         //   Inner loop (2) from 0 to the size of the list (exclusive)
p=x)                   //     After every iteration, save the previous value in p
if((x=l.get(i++))>=p)     //    If the current item is equal or larger than the previous:
t.add(l.remove(--i));   //     Add it to the temp-List, and remove it from the input-List
//   End of inner loop (2) (implicit / single-line body)
//  End of loop (1) (implicit / single-line body)
return r;                     //  Return result-List
}                               // End of method

1

# Java 8, 182 bytes

import java.util.*;l->{List r=new Vector(),t;for(int p,i,x;l.size()>0;){p=l.get(0);r.add(t=new Vector());for(i=-1;++i<l.size();p=x)if((x=l.get(i))>=p)t.add(l.remove(i--));}return r;}


Explanation:

Try it here.

import java.util.*;            // Required import for List and Vector
l->{                           // Method with ArrayList<Integer> parameter and List return-type
List r=new Vector(),         //  Return-List
t;                      //  Temp-List
for(int p,i,x;               //  Some temp integers
l.size()>0;){            //  Loop (1) as long as there are still items left in the list
p=l.get(0);                //   Set p to the first item of the list
p=x)                   //     After every iteration, save the previous value in p