Thuật toán Sắp xếp bong bóng là một thuật toán sắp xếp mảng bằng cách so sánh hai phần tử liền kề và hoán đổi chúng nếu chúng không theo thứ tự dự định. Ở đây đặt hàng có thể là bất cứ điều gì như tăng lệnh hoặc giảm lệnh.
Cách thức hoạt động của bong bóng
Chúng tôi có một mảng chưa được phân loại ARR = [1, 4, 2, 5, -2, 3] Nhiệm vụ là sắp xếp mảng bằng cách sử dụng bong bóng. & NBSP;arr = [ 1, 4, 2, 5, -2, 3 ] the task is to sort the array using bubble sort.
Sắp xếp bong bóng so sánh phần tử từ chỉ mục 0 và nếu chỉ mục 0 lớn hơn chỉ số 1 thì các giá trị sẽ được hoán đổi và nếu chỉ số 0 nhỏ hơn chỉ số 1 thì không có gì xảy ra.
Sau đó, chỉ số 1 so sánh với chỉ số thứ 2 sau đó chỉ số thứ 2 so với bảng thứ 3, v.v.
Hãy để xem nó với một ví dụ, mỗi bước được minh họa ngắn gọn ở đây
So sánh xảy ra cho đến khi phần tử cuối cùng của mảng
Sau mỗi lần lặp, giá trị lớn nhất của mảng trở thành chỉ số cuối cùng của mảng. Trong mỗi lần lặp, so sánh xảy ra cho đến khi phần tử chưa được phân loại cuối cùng.
Bây giờ so sánh đã giảm một bước vì yếu tố lớn nhất là đúng chỗ
Sau tất cả các lần lặp và so sánh các yếu tố, chúng tôi nhận được một mảng được sắp xếp.
Cú pháp
BubbleSort[array]{ for i -> 0 to arrayLength for j -> 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] }
Implementation
JavaScript
function
bblSort[arr]{
for
[
____10
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]1
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]2
for
[
____10 Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]6
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]7
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]8
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]9
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }0____10
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }2
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }0
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }4
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }0
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }6
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]7
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }8
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]2
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }8
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }8
Output Sorted Array : [3, 5, 23, 35, 45, 243, 356, 5346]4
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }8
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]0
Output Sorted Array : [3, 5, 23, 35, 45, 243, 356, 5346]7
Output Sorted Array : [3, 5, 23, 35, 45, 243, 356, 5346]8
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]
Lưu ý: Việc thực hiện này không được tối ưu hóa. Chúng tôi sẽ thấy giải pháp tối ưu hóa tiếp theo.This implementation is not optimized. We will see the optimized solution next.
Giải pháp tối ưu hóa
Như chúng tôi đã thảo luận về việc thực hiện phân loại bong bóng trước đó không được tối ưu hóa. Ngay cả khi mảng được sắp xếp, mã sẽ chạy với độ phức tạp O [n^2]. Hãy cùng xem cách thực hiện một thuật toán sắp xếp bong bóng được tối ưu hóa trong JavaScript.
Cú pháp cho giải pháp được tối ưu hóa
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }
Thực hiện
JavaScript
function
bblSort[arr]{
for
[
____10
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]1
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]2
for
[
____10 Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]6
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }0____10
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }2
1for
function
4
function
5
9function
0function
1
function
5for
bblSort[arr]{
1
bblSort[arr]{
2
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]8
bblSort[arr]{
4Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]0
Output Sorted Array : [3, 5, 23, 35, 45, 243, 356, 5346]7
bblSort[arr]{
5bblSort[arr]{
9
bblSort[arr]{
5
1
bblSort[arr]{
5
9
4function
1
bblSort[arr]{
2
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }8
function
5
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }8
function
5
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]8
for
2for
3for
4function
1
function
5
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }8
1
BubbleSort[array]{ for i -> 0 to arrayLength isSwapped 0 to [arrayLength - i - 1] if arr[j] > arr[j + 1] swap[arr[j], arr[j + 1]] isSwapped -> true }8
1[
1
Lưu ý: Việc thực hiện này không được tối ưu hóa. Chúng tôi sẽ thấy giải pháp tối ưu hóa tiếp theo.
Giải pháp tối ưu hóa
[
5
Output Sorted Array : [3, 5, 23, 35, 45, 243, 356, 5346]
Như chúng tôi đã thảo luận về việc thực hiện phân loại bong bóng trước đó không được tối ưu hóa. Ngay cả khi mảng được sắp xếp, mã sẽ chạy với độ phức tạp O [n^2]. Hãy cùng xem cách thực hiện một thuật toán sắp xếp bong bóng được tối ưu hóa trong JavaScript.
Cú pháp cho giải pháp được tối ưu hóa
Thực hiệnO[n2].
function
0
1
Output Sorted array : [5, 6, 43, 55, 63, 234, 235, 547]0
3O[n]
1Output
Sorted array :
[5, 6, 43, 55, 63, 234, 235, 547]
0
6: O[1]