อัลกอริทึม MinimumSwapQ
อัลกอริทึม MinimumSwapQ
วิธีที่ผมคิดในการเรียงข้อมูลให้สลับที่ได้น้อยครั้งที่สุด
รอบที่ 1 ตำแหน่งที่เลือกคือ index 0 (เลข 3) แล้วก็ให้ไปวนหาในข้อมูลในตำแหน่งที่เหลือคือ 1,2,3(เลข 4,2,1 ตามลำดับ) ปรากฎว่า ข้อมูลที่เล็กที่สุด คือ เลข 1 แล้วนำเลข 3 กับ 1 เปรียบเทียบกัน ปรากฎว่า เลข 1 เล็กว่า 3 นำเลข 3 กับ เลข 1 สลับตำแหน่งกัน (ถ้าข้อมูลที่ค้นหาเจอขนาดใหญ่กว่า ก็ไม่ต้องสลับตำแหน่งกัน) สลับตำแหน่งกันเรียบร้อยก็ เลื่อน ตำแหน่งที่เลือก ไปข้างหน้า 1 ตำแหน่ง และตำแหน่งที่เลือกคือ index 0 ก็จะกลายเป็น ตำแหน่งทีเรียงเสร็จแล้ว (ตำแหน่งทีเรียงเสร็จแล้วเราจะไม่ไปยุ่งกับมันอีก)
รอบที่ 2 ตำแหน่งที่เลือกคือ index 1 (เลข 4) แล้วก็ให้ไปวนหาในข้อมูลในตำแหน่งที่เหลือคือ 2,3(เลข 2,3 ตามลำดับ) ปรากฎว่า ข้อมูลที่เล็กที่สุด คือ เลข 2 แล้วนำเลข 4 กับ 2 เปรียบเทียบกัน ปรากฎว่า เลข 2 เล็กว่า 4 นำเลข 4 กับ เลข 2 สลับตำแหน่งกัน สลับตำแหน่งกันเรียบร้อยก็ เลื่อน ตำแหน่งที่เลือก ไปข้างหน้า 1 ตำแหน่ง และตำแหน่งที่เลือกคือ index 1 ก็จะกลายเป็น ตำแหน่งทีเรียงเสร็จแล้ว
รอบที่ 3 ตำแหน่งที่เลือกคือ index 2 (เลข 4) แล้วก็ให้ไปวนหาในข้อมูลในตำแหน่งที่เหลือคือ 3 (เลข 3 ตามลำดับ) ปรากฎว่า ข้อมูลที่เล็กที่สุด คือ เลข 3 แล้วนำเลข 4 กับ 3 เปรียบเทียบกัน ปรากฎว่า เลข 3 เล็กว่า 4 นำเลข 4 กับ เลข 3 สลับตำแหน่งกัน สลับตำแหน่งกันเรียบร้อยก็ เลื่อน ตำแหน่งที่เลือก ไปข้างหน้า 1 ตำแหน่ง และตำแหน่งที่เลือกคือ index 2 ก็จะกลายเป็น ตำแหน่งทีเรียงเสร็จแล้ว
รอบที่ 4 ตำแหน่งที่เลือกคือ index 3 (เลข 4) ก็จะไม่ต้องทำอะไร ก็เอาเลข 4 เป็นข้อมูลที่ใหญ่ที่สุดเลย
ก็เสร็จสิ้นการเรียงข้อมูล
จากแนวคิดผมก็นำมาเขียนโค้ด
char [] charecter = charArr(input);
int current = 0, last = charecter.length-1; int walker, smallest; // while(current < last) { smallest = current; walker = current + 1; //วนหาอักษรที่เล็กที่สุด ในข้อมูลที่เหลือ while(walker <= last) { if(charecter[smallest] > charecter[walker]) smallest = walker; walker++; }//เจอแล้วก็สลับตำแหน่งกัน swap(charecter, current, smallest);//คือ เมทอต ไว้สลับตำแหน่งข้อมูล current++; } } |
current คือ ตัวแปรทำหน้าที่ เก็บตำแหน่ง(index)ที่เราเลือก
last คือ ตัวแปรทำหน้าที่ เก็บตำแหน่ง(index)สุดท้ายของข้อมูล
wallker คือ ตัวแปรทำหน้าที่สำหรับ วนหาค่าที่เล็กที่สุดใน ข้อมูลที่เหลืออยู่
smallest คือ ตัวแปรทำหน้าที่เก็บตำแหน่งข้อมูลที่เล็กสุด
swap คือ เมทอต ไว้สลับตำแหน่งข้อมูล
สำหรับการ อธิบาย อัลกอริทึม MinimumSwapQ ตามแนวคิดผม ก็จบแค่นี้ ครับ ถ้าไม่เข้าใจ ส่วนไหน คอมเม้น ถามได้นะครับ เอาไว้เจอกันใน บทความต่อไปคับ
สำหรับการ อธิบาย อัลกอริทึม MinimumSwapQ ตามแนวคิดผม ก็จบแค่นี้ ครับ ถ้าไม่เข้าใจ ส่วนไหน คอมเม้น ถามได้นะครับ เอาไว้เจอกันใน บทความต่อไปคับ