Search…

Distribution Sort - Bucket Sort

18/08/20201 min read
Bucket Sort hữu dụng  khi cần sắp xếp các dãy số nằm trong một điều kiện nhất định, ví dụ sắp xếp dãy số với các phần tử nằm trong khoảng 0.1 đến 1.0 hay là từ 1 đến 100.

Thuật toán Bucket Sort

Ý tưởng

Đặt các phần tử của mảng cần sắp xếp input vào các xô (bucket) thích hợp, sau khi đặt hết tất cả các phần tử vào trong các xô thì trong mỗi xô sắp xếp các phần tử trong xô theo thứ tự. Cuối cùng liên kết các xô lại trở thành mảng các phần tử đã được sắp xếp theo thứ tự.

Bucket_Sort

Độ phức tạp của thuật toán là O(n log n).

Hiện thực

void bucketSort(float arr[], int n)
{
	// Tạo các Bucket rỗng
	vector<int> b[n];

	// Đặt các phần tử vào các Bucket
	for (int i = 0; i < n; i++)
	{
		int bi = n * arr[i]; // Địa chỉ của Bucket
		b[bi].push_back(arr[i]);
	}

	// Sắp xếp trong từng Bucket
	for (int i=0; i<n; i++)
		sort(b[i].begin(), b[i].end());

	// Liên kết tất cả các Bucket lại
	int index = 0;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < b[i].size(); j++)
			arr[index++] = b[i][j];
}

Bài chung Series

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024