Code Tu Tam

Triển khai thuật toán sắp xếp Bubble sort (nổi bọt) – Code minh họa C++

Rate this post

Chào mừng các bạn quay trở lại với code từ tâm. Đây là một bài viết trong series các thuật toán sắp xếp có minh họa code sử dụng ngôn ngữ lập trình C++.

Bài viết đầu tiên này chúng ta sẽ cùng tìm hiểu về thuật toán sắp xếp bubble sort hay còn gọi là sắp xếp nổi bọt. Nội dung bài viết bao gồm các phần sau:

Ý tưởng của thuật toán bubble sort

Các bước mô phỏng thuật toán sắp xếp nổi bọt

Triển khai code thuật toán sắp xếp nổi bọt với C++

Thuật toán sắp xếp nổi bọt có thể triển khai 1 cách đơn giản như sau:

#include <iostream>
using namespace std;
void swap(int* x, int* y) {
	int t;
	t = *x;
	*y = *x;
	*y = t;
}
void printAray(int* arr, int n) {
        cout << "Giá tri của mảng sau khi sắp xếp là" << endl;
	for (int i = 0; i < n; i++) {
		cout << arr[i] << " ";
	}
}
void bubleSortArray(int* arr, int n) {
	for (int i = 0; i < n - 1; i++){
		for (int j = 0; j < n - i - 1; j++){
			if (arr[j] > arr[j + 1]){
				swap(arr[j], arr[j + 1]);
			}
		}
	}
	printAray(arr, n);
}
int main()
{
	int arr[100];
	int n;
	cout << "Nhap vao so phan tu cua mang" << endl;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cout << "nhap phan tu arr[" << i << "]" << endl;
		cin >> arr[i];
	}
	bubleSortArray(arr, n);
}

Tối ưu thuật toán sắp xếp nổi bọt

Code minh họa.

#include <iostream>
using namespace std;

void bubbleSort(int arr[], int n) {
  for (int i= 0; i< n- 1; ++i) {
    int swap = 0;
    for (int j = 0; j < n- i - 1; ++i) {
      if (array[i] > array[i + 1]) {
        int temp = array[i];
        array[i] = array[i + 1];
        array[i + 1] = temp;
        swap = 1;
      }
    }.
    if (swapped == 0)
      break;
  }
}
void printArray(int array[], int size) {
  for (int i = 0; i < size; ++i) {
    cout << "  " << array[i];
  }
  cout << "\n";
}

int main() {
  int data[] = {-2, 45, 0, 11, -9};
  int size = sizeof(data) / sizeof(data[0]);
  bubbleSort(data, size);
  printArray(data, size);
}

Đánh giá thuật toán sắp xếp bubble

Độ phức tạp

Ưu điểm & Nhược điểm

Các thuật toán liên quan

Tổng kết

Hy vọng qua bài viết về giải thuật sắp xếp Bubble Sort (Sắp xếp nổi bọt) này sẽ giúp các bạn hiểu và vận dụng tốt vòng lặp for cũng như hiểu được ý tưởng của giải thuật này. Cũng khá thú vị đấy chứ nhỉ!

Cảm ơn các bạn đã theo dõi series thuật toán này.

Exit mobile version