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

Discussion in 'Xây dựng ứng dụng desktop standalone' started by Nguyễn Tiến Thành, 29/5/17.

  1. Các anh cho em hỏi, em có bài tập lớn yêu cầu sắp xếp danh sách các sản phẩm bằng các thuật toán sắp xếp: chọn, chèn, nổi bọt, nhanh quicksort và khóa để sắp xếp.
    Danh sách của em gồm các mục:
    1. Mã sản phẩm
    2. Tên sản phẩm
    3. Chủng loại
    4. Nhà cung cấp
    5. Nhà sản xuất
    6. Số lượng
    7. Giá
    Hiện tại em chưa biết phải làm thế nào, anh(chị) có thể hướng dẫn em cách làm được không ạ.
    Em cảm ơn ạ.
  2. JackV

    JackV Administrator Staff Member

    Đầu tiên là bạn phải tìm hiểu các thuật toán sắp xếp đã đưa ra rồi theo hướng dẫn của thuật toán đó mà viết.
    Thuật toán là 1 cách viết thôi, nếu hướng dẫn bạn thì là đã giải dùm bạn rồi nên bạn cứ làm, code chạy không đúng hay code xong đưa lên mọi người kiểm tra cũng được.
  3. [​IMG]
    Em làm thuật toán Selection Sort chạy thì nó báo lỗi như này là sao thế anh?
  4. QuangTrung93

    QuangTrung93 New Member

    Bạn xem instance variable "ten" đã được khởi tạo chưa complier cảnh báo có lẽ mảng này chưa được khởi tạo dẫn đến lỗi NullPointerExeception
  5. Em sửa thành int[] tenSP = new int [100]; Chạy thì không báo lỗi nữa nhưng chương trình không sắp xếp được anh ơi :(
  6. [​IMG]
    Bài của e là dạng menu như này khi chọn sắp xếp theo mục nào thì sắp xếp theo mục đấy anh ạ
  7. JackV

    JackV Administrator Staff Member

    Bạn không post code để mọi người kiểm tra giúp thì k ai giúp được đâu!
  8. Code của e đây anh ơi

    Attached Files:

  9. JackV

    JackV Administrator Staff Member

    PHP:
            mnSXChonSoLuong.addActionListener(new ActionListener() {

                @
    Override
                
    public void actionPerformed(ActionEvent e) {
                    
    System.out.println("Sắp xếp số lượng");
                    
    int sxTen mnSXChonSoLuong.getComponentCount();
                    
    int[] tenSP = new int[tblSanPham.getRowCount()];
                    if (
    sxTen == 0) {
                        for (
    int i 0tenSP.lengthi++) {

                            
    int max tenSP[i];
                            
    int index i;
                            for (
    int j 1tenSP.lengthj++) {
                                if (
    max tenSP[j]) {
                                    
    max tenSP[j];
                                    
    index j;
                                }
                            }
                            if (
    index != i) {
                                
    int temp tenSP[i];
                                
    tenSP[i] = tenSP[index];
                                
    tenSP[index] = temp;
                            }
                        }

                    }
                    
    Sau khi sắp xếp thì phải cập nhật lại dữ liệu cho table
                    
                
    }
            });
    Đoạn trên có rất nhiều vấn đề, sắp xếp theo số lượng nhưng lại dùng tên để kiểm tra.
    Khi kiểm tra được giá trị thì chỉ thay đổi giá trị index của danh sách tên sản phẩm chứ không liên quan gì đến danh sách các record đang hiện thị trên table.
    rồi sau khi thực hiện xong cũng không cập nhật lại dữ liệu cho table.
    ...
    quá nhiều vấn đề, xem lại nha bạn.
  10. Bây giờ e muốn sắp xếp theo số lượng tăng dần thì làm thế nào để sắp xếp được các record trên table vậy anh? Tại bình thường em chỉ làm trên màn hình console giờ làm ở table em không hiểu lắm. Với thầy giáo chỉ cho phép dùng 4 thuật toán: SelectionSort, QuickSort, BubleSort vs InsertSort mà không được dùng Sort của java hỗ trợ.
  11. JackV

    JackV Administrator Staff Member

    Để sắp xếp được các record trên table thì bạn phải qua một số bước, lấy ra tablemodel rồi lấy dữ liệu ra, sắp xếp, sau đó cập nhật lại dữ liệu cho nó.

Chia sẻ trang này