เพื่อน ๆ หลายคนอาจสงสัยในการทำงานของ Bubble Sort ซึ่งจริงๆแล้วถ้าเราต้องใจมองก็จะเห็นได้ว่ามันไม่ยากอย่างที่คิด
ดังนั้นเราไปชม การทำงานของ Bubble Sort กันเลย
หากท่านดูคลิปแล้วยังรู้สึก งง ๆ ลองอ่านทางนี้ดูนะครับ ^^
-
private static void bubbleSort(int[] intArray) {
-
int n = intArray.length;
-
int temp = 0;
-
for(int i=0; i < n; i++){
-
for(int j=1; j < (n–i); j++){
-
if(intArray[j–1] > intArray[j]){
-
//swap the elements!
-
temp = intArray[j–1];
-
intArray[j–1] = intArray[j];
-
intArray[j] = temp;
-
}
-
}
-
}
-
}
จาก code เราทำการตั้งค่า จำนวนของ array ลงที่ตัวแปร n ซึ่งถ้า array มี 5 ตัว n ก็ = 5 นั่นเอง และเราจะทำการตั้งตัวแปรไว้เฉย ๆ มา 1 ตัวชื่อว่า temp ให้เท่ากับ 0
เมื่อเข้า loop for นั้น เรากำหนดให้ i=0 และ i น้อยกว่า n และเพิ่มขึ้นเรื่อย ๆ ถ้ายังอยู่ในเงื่อนไขก็เข้าฟังก์ชั่นต่อไป
คือเข้า loop for อีก loop ซึ่ง loop นี้ ตั้งเงื่อนไขว่า j = 1 แล้ว j< n-1 และ n เพิ่มขึ้นเรื่อย ๆ ถ้ายังอยู่ในเงื่อนไขก็เข้าการทำงานต่อไป แต่ถ้าหาก j=n-1 เมื่อใดก็กลับสู่ loop for ที่แล้วและวนกลับมาอีกครั้งจนกว่าจะครบรอบ
การทำงานต่อไปคือ if ตัว array ตัวที่ j-1 มากกว่า array ตัวที่ j จะทำการ swap โดยเริ่มจาก
เก็บค่า array[j-1] ไปไว้ที่ temp เพื่อเก็บไว้ในการสับเปลี่ยนตอนสุดท้าย
และนำ array[j] มาเปลี่ยนกับ array[j-1]
จากนั้น นำ temp มาลงใน array[j]
ถ้าหากตัว array[j-1] น้อยกว่า array[j] จะไม่มีกระบวนการนี้เกิดขึ้นและกลับไป loop for ที่แล้วเพื่อทำการเพิ่ม j จนกว่าจะหลุด loop และกลับไป loop for i อีกครั้งและเพิ่ม i จนกว่าจะครบเงื่อนไขนั่นเอง