Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: Thuật toán sắp xếp thứ trong tuần?

  1. #1
    Ngày gia nhập
    05 2010
    Bài viết
    0

    Angry Thuật toán sắp xếp thứ trong tuần?

    Chào các bạn!
    Mình có một ví dụ như sau:
    có một mảng a chứa: 2,2,5,3,4,1,5,6,7
    mình chọn một số làm điều kiện so sánh như số 3 chẳng hạn thì thuật toán thế nào để nó sắp xếp như sau: 3,4,5,5,6,7,1,2,2
    nếu chọn số 5 làm điều kiện so sánh thì sẽ sắp xếp thành:
    5,5,6,7,1,2,2,3,4
    ......Nói chung là đây là cách sắp xếp thứ trong tuần....ngày nào gần ngày hiện tại nhất thì cho lên đầu sau đó cứ tăng cho đến cuối tuần và lại lặp lại.....
    Bạn nào có hướng giải quyết vấn đề này thì giúp mình với!
    Cảm ơn các bạn trước...
    Đã được chỉnh sửa lần cuối bởi Marks_tam : 18-12-2011 lúc 11:24 AM.
    Ta đã trở lại và ăn hại gấp đôi/..

  2. #2
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    sắp xếp mảng tăng dần.duyệt đến ngày chọn làm mốc,bốc hết các ptu nằm pía trc mốc đó.wang ra đằng sau
    HT117-5277

  3. #3
    Ngày gia nhập
    05 2010
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi treatmaster Xem bài viết
    sắp xếp mảng tăng dần.duyệt đến ngày chọn làm mốc,bốc hết các ptu nằm pía trc mốc đó.wang ra đằng sau
    Nghe cũng hợp lý phết.....nhưng mà chưa nghĩ ra cách cài đặt ra sao bạn ạ...
    Ta đã trở lại và ăn hại gấp đôi/..

  4. #4
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Nguyên tắc: nếu sắp xếp mảng theo kiểu đặc biệt thì cần hàm so sánh kiểu đăc biệt
    Trường hợp của bạn cần lập một cái hàm so sánh như vầy

    C Code:
    1. int SoThuTu(int a, int b, int moc)
    2. {
    3.   // nếu a và b ở cùng một phía của mốc thì so sánh bình thường
    4.   if (a >= moc && b >= moc || a < moc && b < moc) return (a > b);
    5.   // khi a và b không ở cùng bên của mốc thì số nào ở dưới mốc được coi như số đi sau
    6.   return (a < moc);
    7. }
    8.  
    9. // trong hàm main đặt
    10. int moc = 3;
    11.  
    12. // trong code sắp xếp bạn sửa phần so sánh như sau
    13.  
    14. if (SoThuTu(mang[i], mang[j], moc)) // i, j là hai phần tử cần so sánh
    15. {
    16.   ......
    17. }

  5. #5
    Ngày gia nhập
    12 2009
    Nơi ở
    The country of happiness
    Bài viết
    182

    sort lại rồi duyệt thôi. Sort xong thì mảng gồm 2 nửa là >= x và < x , duyệt mỗi nửa rồi cho vào mảng mới.

    cải tiến thì lưu lại số lượng phần tử của mỗi giá trị ...
    Trích dẫn Nguyên bản được gửi bởi Wazi Armstrong Xem bài viết
    Ôi skill của mình đã đạt đến hàng tuyệt đỉnh
    Không chỉ ăn, tắm, đi lại có thể code
    Mà giờ đã mình có thể code cả khi ngủ. Code tạm vào buffer của não, lúc nào dậy chỉ việc viết ra một cách trôi chảy không lưỡng lự.
    PS: Nếu ngủ dài rảnh rảnh có thể debug luôn, dậy chỉ việc build ?
    Trích dẫn Nguyên bản được gửi bởi vietanh8286 Xem bài viết
    Lập trình viên giỏi là lập trình viên có vợ

  6. #6
    Ngày gia nhập
    05 2010
    Bài viết
    0

    Mặc định Thuật toán sắp xếp thứ trong tuần?

    Trích dẫn Nguyên bản được gửi bởi VoTichSu Xem bài viết
    Nguyên tắc: nếu sắp xếp mảng theo kiểu đặc biệt thì cần hàm so sánh kiểu đăc biệt
    Trường hợp của bạn cần lập một cái hàm so sánh như vầy

    C Code:
    1. int SoThuTu(int a, int b, int moc)
    2. {
    3.   // nếu a và b ở cùng một phía của mốc thì so sánh bình thường
    4.   if (a >= moc && b >= moc || a < moc && b < moc) return (a > b);
    5.   // khi a và b không ở cùng bên của mốc thì số nào ở dưới mốc được coi như số đi sau
    6.   return (a < moc);
    7. }
    8.  
    9. // trong hàm main đặt
    10. int moc = 3;
    11.  
    12. // trong code sắp xếp bạn sửa phần so sánh như sau
    13.  
    14. if (SoThuTu(mang[i], mang[j], moc)) // i, j là hai phần tử cần so sánh
    15. {
    16.   ......
    17. }

    Mình đã làm giống theo của bạn rồi nhưng cũng không chạy được.....bạn đã thử qua đoạn này chưa vậy...hoặc có thể mình đã làm sai đoạn nào đó....
    dù sao thì cũng lảm ơn bạn đã giúp đỡ..!

    Mình chơi các trâu bò là duyệt mảng, thẳng nào lớn hơn cái mốc ý thì lưu vào mang1, thằng nào nhỏ hơn thì lưu vào mang2 rồi sau đó sắp xếp 2 mảng đó...theo thứ tự nào thi tùy......hơi bị trâu bò và tốn nhiều bộ nhớ....

    Thế nên hy vọng có bạn nào có thuật toán nào ngon hơn...



    sort lại rồi duyệt thôi. Sort xong thì mảng gồm 2 nửa là >= x và < x , duyệt mỗi nửa rồi cho vào mảng mới.

    cải tiến thì lưu lại số lượng phần tử của mỗi giá trị ...
    Của bạn này giống ý mình ghê......thanks bạn đã đóng góp...
    Ta đã trở lại và ăn hại gấp đôi/..

  7. #7
    Ngày gia nhập
    10 2011
    Bài viết
    552

    ^^ À cái này hả.
    Thứ ngày cũng chỉ là 1 trường hợp trong "tập hợp vòng" . Tức là phần tử cuối mà tăng thêm 1 "đơn vị' thì lại trở thành đầu.

    Bạn có thể sử dụng dslk đơn nối vòng để làm bài toán này.
    Đầu tiên bạn đẩy vào List thứ tự tăng dần. Head nằm ở số bé nhất.
    Bạn chọn số bao nhiêu thì cứ đặt Head về nơi đấy rồi cho duyệt là ổn
    Um Mani Padme Hum...!!

  8. #8
    Ngày gia nhập
    05 2010
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    ^^ À cái này hả.
    Thứ ngày cũng chỉ là 1 trường hợp trong "tập hợp vòng" . Tức là phần tử cuối mà tăng thêm 1 "đơn vị' thì lại trở thành đầu.

    Bạn có thể sử dụng dslk đơn nối vòng để làm bài toán này.
    Đầu tiên bạn đẩy vào List thứ tự tăng dần. Head nằm ở số bé nhất.
    Bạn chọn số bao nhiêu thì cứ đặt Head về nơi đấy rồi cho duyệt là ổn
    Mình chưa hiểu rõ lắm, nhưng có điều, nếu "phần tử cuối mà tăng thêm 1 "đơn vị' thì lại trở thành đầu" ...thì có áp dụng được cho trường hợp 2 số bị lặp lại không như ví dụ của mình đó: 3,4,5,5,6,7,1,2,2 có 2 số 2 ở cuối...
    Ta đã trở lại và ăn hại gấp đôi/..

  9. #9
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Mặc kệ nó.
    Bạn tưởng tượng đi. Như việc lần tràng hạt ấy
    Ko thì bạn cắt 1 mảnh giấy dài ra. Viết thứ tự các số lên đó, rồi chắp đầu với cuối lại, dán lại thành 1 cái vòng. Bạn xoay cái vòng đó về 1 hướng thì sẽ đúng như thứ bạn cần tìm
    Mình chưa hiểu rõ lắm, nhưng có điều, nếu "phần tử cuối mà tăng thêm 1 "đơn vị' thì lại trở thành đầu" ...thì có áp dụng được cho trường hợp 2 số bị lặp lại không như ví dụ của mình đó: 3,4,5,5,6,7,1,2,2 có 2 số 2 ở cuối..
    Vậy thì 2 -> 3 thế thôi ĐƠn giản.
    //
    Bạn học đến đâu rồi ? Học đến DSLK thì dễ biểu diễn hơn.
    Nếu chưa thì cứ dùng mảng mà biểu diễn.

    Việc của bạn là gì ??
    Là sắp xếp cái dãy theo thứ ự tăng dần. 1 2 2 3 4 5 5 6 7 . OK
    Xong xuôi. Bạn Muốn bắt đầu tại vị trí nào ?
    Giả sử số 4 chẳng hạn. Thì cứ cho chạy từ 4 mọt vòng cho đến khi gặp lại 4 thì dừng.
    Nó sẽ ra 4 5 5 6 7 1 2 2 3 . OK ?
    Đã được chỉnh sửa lần cuối bởi clchicken : 18-12-2011 lúc 06:58 PM.
    Um Mani Padme Hum...!!

  10. #10
    Ngày gia nhập
    05 2010
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    Mặc kệ nó.
    Bạn tưởng tượng đi. Như việc lần tràng hạt ấy
    Ko thì bạn cắt 1 mảnh giấy dài ra. Viết thứ tự các số lên đó, rồi chắp đầu với cuối lại, dán lại thành 1 cái vòng. Bạn xoay cái vòng đó về 1 hướng thì sẽ đúng như thứ bạn cần tìm

    Vậy thì 2 -> 3 thế thôi ĐƠn giản.
    //
    Bạn học đến đâu rồi ? Học đến DSLK thì dễ biểu diễn hơn.
    Nếu chưa thì cứ dùng mảng mà biểu diễn.

    Việc của bạn là gì ??
    Là sắp xếp cái dãy theo thứ ự tăng dần. 1 2 2 3 4 5 5 6 7 . OK
    Xong xuôi. Bạn Muốn bắt đầu tại vị trí nào ?
    Giả sử số 4 chẳng hạn. Thì cứ cho chạy từ 4 mọt vòng cho đến khi gặp lại 4 thì dừng.
    Nó sẽ ra 4 5 5 6 7 1 2 2 3 . OK ?
    Mình học xong C cũng lâu rồi, giờ ôn lại, nhưng cái vụ dslk thì đúng là học để biết, chưa sd bao giờ......để mình thử cài đặt theo các của bạn xem sao...
    Ta đã trở lại và ăn hại gấp đôi/..

Các đề tài tương tự

  1. Thuật toán Thuật toán tìm chu kỳ của số hữu tỷ vô hạn tuần hoàn.
    Gửi bởi hoailam911 trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 11
    Bài viết cuối: 21-08-2013, 06:37 AM
  2. Bài toán mã đi tuần bằng thuật toán WARNSDORFF
    Gửi bởi tieunguyet trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 0
    Bài viết cuối: 26-11-2012, 11:40 AM
  3. Giải thuật đếm tuần suất các kí tự có trong 1 file .txt
    Gửi bởi silkworm trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 26
    Bài viết cuối: 06-05-2011, 08:18 PM
  4. Mã đi tuần | Quy tắc và thuật toán trong lập trình C#?
    Gửi bởi sasadudu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 23-12-2010, 09:50 PM
  5. lưu đồ giải thuật bài mã đi tuần thuật toán quay lui vét cạn. Giúp mình với?
    Gửi bởi katemat000 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 05-01-2010, 10:53 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn