Bài tập sắp xếp chuỗi trong java sử dụng multithread
Mong được mọi người giúp đỡ ạ, em có đề bài như thế này :
Viết chương trình sắp xếp 1 dãy số nguyên theo thứ tự tăng dần và ghi kết quả ra 1 file text có tên là output.txt , với các yêu cầu:
Dãy số nguyên đầu vào được cho trong 1 file text có tên là input.txt , mỗi số nguyên phân cách nhau bởi kí tự backspace hoặc kí tự xuống dòng.
Chương trình sử dụng n thread để sắp xếp đồng thời dãy số nguyên đó (vì số lượng phần tử của dãy số nguyên có thể là rất lớn, sử dụng multithreading để tối ưu tốc độ trên các CPU hỗ trợ xử lý multithreading), n sẽ được đưa vào trong tham số dòng lệnh.
Gợi ý giải thuật: Chia dãy số input thành n dãy con, mỗi dãy con sau đó sẽ được sắp xếp bởi 1 thread tương ứng. Sau khi n thread đã sắp xếp xong n dãy con ta thu được n dãy con đã có thứ tự, khi đó ta sẽ dễ dàng trộn n dãy con đó thành 1 dãy hoàn chỉnh có thứ tự tăng dần.
Em nghĩ và cũng đã thử việc chia nhỏ mảng và sắp xếp mảng nhỏ đó trên từng thread được rồi, nhưng đến đoạn hợp nhất lại thì em vẫn có chút thắc mắc, nếu mà hợp mất chuỗi đó lại thì mình vẫn phải sắp xếp lại từ đầu vì chuỗi khi hợp nhất chưa được sắp xếp theo thứ tự, mọi người có thể giải thích hoặc suggest cách làm từ đầu giúp em được không ạ
1 CÂU TRẢ LỜI
Tư tưởng chia mảng và sắp xếp trong từng mảng con này mình thấy khá giống với merge sort. Vì thế, nếu bạn đã xong được phần sắp xếp các mảng con rồi, phần merge bạn có thể làm tương tự.
https://medium.com/karuna-sehgal/a-simplified-explanation-of-merge-sort-77089fe03bb2