Hỏi về thuật toán sắp xếp theo hạng

Moi người cho mình hỏi về thuật toán sắp xếp theo hạng với.
Mình học môn tính toán song song và phân tán, có nhận đề tài này.
Mình có tìm thuật toán sắp xếp theo hạng nhưng không có kết quả.
Ace nào trong diễn đàn có biết về thuật toán này hoặc có tài liệu về môn này thì cho mình xin với ạ.
xin cám ơn.

Nghe thuật toán sắp xếp theo hạng lạ quá nhỉ. Bạn có ví dụ nào không?

Hoặc là chụp chương đầu của giáo trình để mọi người xem, chứ từ thuở cha sinh mẹ đẻ đến giờ mình chưa nghe cụm từ này :joy:

1 Like

Chắc là hậu quả của việc dịch sang tiếng Việt những từ không nên dịch :expressionless:

4 Likes

Thuật toán sắp xếp song song (thuật toán sắp xếp theo hạng) chính là nó đấy ạ.
có bác nào biết hay nghe qua không ạ.
em tìm mãi mà không thấy

@MR.QD:

20 characters

1 Like

Không ạ. em mới nhận đề tài. Môn này cũng không có tài liệu luôn :v
chắc em phải lên hỏi lại giáo viên thôi. huhu

https://www.tutorialspoint.com/parallel_algorithm/parallel_algorithm_sorting.htm

2 Likes

ui, em cũng đang định post lên :joy:

thôi tặng bạn ấy keyword google :3

1 Like

Tks các bác ạ.
Chắc em vẫn phải lên hỏi lại cho chắc chắn thôi.

1 Like

Hỏi giáo viên tên đề tài bằng tiếng Anh nha.

Tiếng Việt nhiều tên dịch sang nghe khủng lắm, giống như đề tài cho nhóm nghiên cứu, giống như làm màu :joy:

2 Likes

Tks các bác. em tìm được rồi ạ
Pilot hay còn gọi là sắp xếp theo cách đánh số
sắp xếp theo phần tử hoa tiêu
sắp xếp theo hạng
Tiếng việt phong phú quá

Rank sort :slight_smile: nếu muốn dịch ra thì cũng phải đi kèm từ tiếng Anh để tra cứu chứ :smiley:

Với lại từ dịch ra chưa được chuẩn hóa nên rất khó chịu (thread là gì? concurrency?)

1 Like

bạn ơi cho mình xin slide đc ko? bọn mình cũng đang làm đề tài này hjx hjx.gấp quá.

cho mình xin slide vs ạ[email protected]

Mình cũng Haui nhé bạn :))
Mình chỉ đưa code tuần tự cho bạn dễ hình dung thuật toán thôi.
Còn lại thì bạn tự làm đê

int* rank_sort(int list[],int n)
{
	int i,j;
	int rank_list[50] = {0};
	int sort_list[50] = {0};


	for(i=0; i<n; i++)
	{
		for(j=0; j<i; j++)
		{
			if(list[i] >= list[j])
				rank_list[i]++;
			else
				rank_list[j]++;
		}
	}

	printf("\nHang cua moi phan tu mang\n");
	printf("\n\tPhan tu\t\tHang\n");
	for(i=0; i<n; i++)
		printf("\t%d\t\t%d\n",list[i],rank_list[i]+1);

	for(i=0; i<n; i++)
		sort_list[rank_list[i]] = list[i];

	printf("\nSap xep mang tang dan theo hang\n\t");
	for(i=0; i<n; i++)
		printf("%d ",sort_list[i]);
	printf("\n");
	return sort_list;

}
1 Like

Các anh chị cho e hỏi cái sắp xếp theo hạng nếu có 2 giá trị trùng nhau thì sắp xếp kiểu gì ạ?

Chỗ dựng bảng bạn thêm đk vào chỗ if(a[i] == a[j]).

note

Thật sự cái này chỉ để đọc cho biết vì đã O(n^2) time mà còn O(n) mem :smiley:

1 Like

if A[i] < A[j] rank++ else if A[i]==A[j] && i<j rank++
Mình làm thế.
Cũng mong có cách tối ưu hơn để tham khảo.

2 Likes

Bạn nghiên cứu code #16 xem :slight_smile:

Cho e hỏi là có 2 vòng for mà của e chỉ song song được vòng for ngoài thôi . e dùng openmp

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?