Bucket Sort
สมมติว่าเรารู้ว่าขนาดของ array ที่เราต้องจัดเรียงข้อมูลมีขนาดเล็ก และแน่นอน เราอาจเลือกใช้การจัดเรียงแบบกระจาย (distribution sort) มาทาการจัดเรียงข้อมูลให้เรา และ Bucket sort ก็เป็นเทคนิควิธีอีกแบบหนึ่งที่ใช้การกระจายของข้อมูลมาเป็นตัวช่วยในการจัดเรียง ลองดูภาพตัวอย่างของข้อมูลที่มีอยู่ใน array ตัวอย่างนี้
เรากาหนดให้ array ตัวอย่างมีข้อมูลอยู่ระหว่าง 0 – 9 ดังนั้นเราต้องใช้ตัวนับ 10 ตัวในการนับจานวนครั้งของข้อมูลที่มีอยู่ใน array จากตัวอย่างข้อมูลที่เรากาหนดขึ้น เรามีตัวเลขที่ซ้ากันอยู่ 3 ตัวคือ 2, 4, และ 8 เพราะฉะนั้น counter ที่อยู่ ณ ตาแหน่งของตัวเลขดังกล่าวก็จะมีค่าเป็นจานวนครั้งของตัวเลขทั้งสามตัวที่ถูกเก็บอยู่ใน array ซึ่งก็คือ 2 หลังจากที่เรารู้ถึงความถี่ของข้อมูลใน array แล้วเราก็นาเอา index ของข้อมูลเหล่านี้ใส่กลับเข้าไปใน array
Algorithm Bucket Sort
public void sort(int[] array) {
//each index of count represents number in array
//each number in count represents occurrences of
//numbers in array
for(int i = 0; i < size; i++) {
count[array[i]]++;
}
//move each index where occurrences of numbers appear
//from count back to array
for(int i = 0, j = 0; i < size; i++) {
while(count[i] > 0) {
array[j++] = i;
count[i]--;
}
}
}
ไม่มีความคิดเห็น:
แสดงความคิดเห็น