ผมลองศึกษา การเขียนภาษา จาวา จากเน็ต
แล้วก็ยังมีเรื่องที่ไม่เข้าใจครับ จากโค้ดจาวา ของควิกซอร์ต
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 มันซ้อนกันเยอะ จน ไม่รู้ว่ามันอยู่ซ้อนกันตรงไหนบ้าง
อยากขอคำอธิบายหน่อยครับ ขอบคุณมากครับ
งง กับโค้ด ของ 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 มันซ้อนกันเยอะ จน ไม่รู้ว่ามันอยู่ซ้อนกันตรงไหนบ้าง
อยากขอคำอธิบายหน่อยครับ ขอบคุณมากครับ