งง กับโค้ด ของ Quicksort ครับ

ผมลองศึกษา การเขียนภาษา จาวา จากเน็ต

แล้วก็ยังมีเรื่องที่ไม่เข้าใจครับ จากโค้ดจาวา ของควิกซอร์ต

public class QuickSort
{
    public static void main(String a[])
    {
    int i;
    int array[] = {44,33,55,77,40,60};

    System.out.println("       Quick Sort\n\n");
    System.out.print("Values Before the sort:\n");
    for(i = 0; i < array.length; i++)
    System.out.print( array+"  ");
    System.out.println();
    quick_srt(array,0,array.length-1);
    System.out.print("Values after the sort:\n");
    for(i = 0; i <array.length; i++)
    System.out.print(array+"  ");
    System.out.println();
    System.out.println("END SORT");
    }
    public static void quick_srt(int array[],int low, int n)
    {
    int lo = low;
    int hi = n;
    int aa;
    if (lo >= hi)
        {
        return;
        }
    int mid = array[(lo + hi) / 2];
    while (lo < hi)
        {
            while (lo<hi && array[lo] < mid)
            {
            lo++;
            }
            while (lo<hi && array[hi] > mid)
            {
             hi--;
            }
                     if (lo < hi)
           {
          int Temp = array[lo];
           array[lo] = array[hi];
           array[hi] = Temp;
           }
        }
        if (hi < lo)
          {
          int Temp = hi;
           hi = lo;
           lo = Temp;
           }
           if (lo==low)
       {
        aa=lo+1;
        }
       else
         {
         aa=lo;
         }
      quick_srt(array, low, lo);
      quick_srt(array, aa, n);
   }
}

ในส่วน method main ยังพอเข้าใจ แต่ ส่วน method quick_srt งง อ่ะครับ

ว่าทำไม if , while มันซ้อนกันเยอะ จน ไม่รู้ว่ามันอยู่ซ้อนกันตรงไหนบ้าง

อยากขอคำอธิบายหน่อยครับ ขอบคุณมากครับ
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่