Sắp xếp mảng,phần tử chẵn bên trái tăng dần, lẻ bên phải giảm dần
Bài toán của em như sau
Cho 1 mảng a[n]
Sắp xếp lại mảng sao cho các phần tử chãn ở bên trái theo chiều tăng, phần tử lẻ ở bên phải theo chiều giảm.
B1: Đếm xem mảng có bn phần tử chẵn, lẻ
B2: Duyệt mảng nếu phần tử chẵn thì đưa về đầu mảng,nếu lẻ thì đưa về cuối
B3: Sắp xếp các số chẵn
B4 Sắp các số lẻ
B5 in ra
Ngoài cách trên thì có thể dùng mảng phụ để lưu trữ.
Tuy nhiên e thấy khá là dài dòng, mặc dù code nhìn dễ hiểu.
Xin hỏi các bác đã từng làm qua có ý tưởng gì không? Có cách nào code ngắn gọn tối ưu hơn hay không?
Cách sắp xếp thì có nhiều cái hay hơn mình lấy đại cách này (Đừng quan tâm đến nó.)
ko biết tối ưu chưa. ai tối ưu hơn thì chia sẻ nhé
Thực ra bạn có thể dùng ý tưởng của quicksort, ko cần dùng mảng phụ.
Duyệt từ 1, giả sử đến i thì gặp số lẻ đầu tiên
Duyệt từ n, giả sử đến j gặp số chẵn đầu tiên
swap(i, j) rồi làm tiếp. Sau đó sort 2 bên thôi