Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: [ Solved ]Cải tiến InterchangeSort!

  1. #1
    Ngày gia nhập
    04 2008
    Bài viết
    8

    Red face [ Solved ]Cải tiến InterchangeSort!

    Chào các bạn,mình có ý tưởng thế này:Từ đoạn code ban đầu của interchangesort,sắp tăng dần như sau:
    C++ Code:
    1. void interchangesort(int a[],int n)
    2. {
    3.     int i,j;
    4.     for (i=0;i<n-1;i++)
    5.         for (j=i+1;j<n;j++)
    6.             if (a[i]>a[j])
    7.                 hoanvi(a[i],a[j]);
    8. }

    Mình muốn hỏi ý kiến các bạn về việc cải tiến thuật toán này,ví dụ nha:
    Dãy ban đầu: -5 -4 -7 8 2 3 1
    Sau khi sắp : 8 3 2 1 -7 -5 -4

    (Số âm tăng dần,dồn về cuối dãy,số không âm giảm dần,dồn về đầu dãy.)
    Rất mong nhận được góp ý của tất cả các bạn.
    Mến chào!

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Code:
    void interchangesort(int a[],int n)
    {
        int i,j;
        for (i=0;i<n-1;i++)
            for (j=i+1;j<n;j++)
                if (a[i]>0;a[j]>0;a[i]<a[j])
                    hoanvi(a[i],a[j]);
        for (i=n;i>1;i--)
            for (j=i+1;j<n;j++)
                if (a[i]>0;a[j]>0;a[i]>a[j])
                    hoanvi(a[i],a[j]);
    }
    Vậy có đc không nhỉ ?

  3. #3
    Ngày gia nhập
    04 2008
    Bài viết
    8

    Theo mình thử thì hình như không được rùi bạn ơi.
    Trùi ui,có ai có cách nào khác đóng góp vấn đề này đi...

  4. #4
    Ngày gia nhập
    01 2008
    Nơi ở
    Gameloft Studio
    Bài viết
    294

    Có rất nhiều cách để giải quyết vấn đề này.

    Ví dụ như bạn dời số âm về 1 vế, số dương về 1 vế. Rồi sort 2 lần:

    interchangesort( a, from , to);
    interchangesort( a, to , end);

    Như vậy bạn phải cải tiến interchangesort bằng cách thêm 2 tham số để nó biết sắp xếp từ phần tử from tới phần tử thư to trong mảng. Chứ kh.ông phải mặc định sắp xếp từ 0 đến hết mảng


    Một cách nữa đơn giản hơn là

    C++ Code:
    1. void interchangesort(int a[],int n)
    2. {
    3.     int i,j;
    4.     for (i=0;i<n-1;i++)
    5.         for (j=i+1;j<n;j++)
    6.             if ( SoSanh( a[i], a[j]) == 1 )
    7.                 hoanvi(a[i],a[j]);
    8. }
    9.  
    10. int SoSanh( int a, int b)
    11. {
    12.     Điều kiện sắp xếp a,b
    13.           return 1;
    14.    
    15.     return 0;
    16.  
    17. }

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

  1. Giáo viên nhận dạy kèm tiếng anh giao tiếp tại TPHCM hoặc Toeic
    Gửi bởi phi60801530 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 11-02-2017, 09:10 PM
  2. Trả lời: 0
    Bài viết cuối: 18-04-2012, 12:24 PM
  3. [ Solved ]Lãi xuất tiết kiệm
    Gửi bởi the_eye trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 8
    Bài viết cuối: 26-09-2008, 08:13 AM
  4. [ Solved ] Làm sao để insert tiếng việt trong store procedure?
    Gửi bởi dta4c trong diễn đàn Thắc mắc đại cương Database & Reporting
    Trả lời: 4
    Bài viết cuối: 05-09-2008, 11:52 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