DAA - เรียงฟอง
Bubble Sort เป็นอัลกอริทึมการเรียงลำดับพื้นฐานซึ่งทำงานโดยแลกเปลี่ยนองค์ประกอบที่อยู่ติดกันซ้ำ ๆ หากจำเป็น เมื่อไม่จำเป็นต้องมีการแลกเปลี่ยนไฟล์จะถูกจัดเรียง
นี่เป็นเทคนิคที่ง่ายที่สุดในบรรดาอัลกอริทึมการเรียงลำดับ
Algorithm: Sequential-Bubble-Sort (A)
fori← 1 to length [A] do
for j ← length [A] down-to i +1 do
if A[A] < A[j - 1] then
Exchange A[j] ↔ A[j-1]
การนำไปใช้
voidbubbleSort(int numbers[], intarray_size) {
inti, j, temp;
for (i = (array_size - 1); i >= 0; i--)
for (j = 1; j <= i; j++)
if (numbers[j - 1] > numbers[j]) {
temp = numbers[j-1];
numbers[j - 1] = numbers[j];
numbers[j] = temp;
}
}
การวิเคราะห์
ที่นี่จำนวนการเปรียบเทียบคือ
1 + 2 + 3 +...+ (n - 1) = n(n - 1)/2 = O(n2)
เห็นได้ชัดว่ากราฟแสดงไฟล์ n2 ลักษณะของการเรียงฟอง
ในอัลกอริทึมนี้จำนวนการเปรียบเทียบจะไม่คำนึงถึงชุดข้อมูลกล่าวคือองค์ประกอบอินพุตที่ให้มาจะเรียงตามลำดับหรือเรียงลำดับย้อนกลับหรือสุ่ม
ความต้องการหน่วยความจำ
จากอัลกอริทึมที่ระบุไว้ข้างต้นเป็นที่ชัดเจนว่าการเรียงฟองไม่จำเป็นต้องใช้หน่วยความจำเพิ่มเติม
ตัวอย่าง
Unsorted list: |
|
1 เซนต์ซ้ำ:
5 > 2 swap |
|
|||||||
5 > 1 swap |
|
|||||||
5 > 4 swap |
|
|||||||
5 > 3 swap |
|
|||||||
5 < 7 no swap |
|
|||||||
7 > 6 swap |
|
การทำซ้ำ2 ครั้ง :
2 > 1 swap |
|
|||||||
2 < 4 no swap |
|
|||||||
4 > 3 swap |
|
|||||||
4 < 5 no swap |
|
|||||||
5 < 6 no swap |
|
มีการเปลี่ยนแปลงใน 3 ไม่เป็นถนน 4 วัน 5 วันและ 6 THซ้ำ
สุดท้าย
the sorted list is |
|