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: Merge Sort C# | sắp xếp mảng số nguyên trên c#

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    149

    Mặc định Merge Sort C# | sắp xếp mảng số nguyên trên c#

    bạn nào có thể chuyển code Merge Sort này từ C++ sang c# giùm mình với

    PHP Code:
    int tim1duongchay(mang a,int kthucint bdauint &cuoiint &hetday)
    {
        
    int truoc=bdau;
        
    cuoitruoc+1;
        while((
    cuoi<=kthuc) && (a[truoc]<=a[cuoi]))
        {
            
    truoc cuoi;
            
    cuoi++;
        }
        if(
    cuoi kthuc)
        {
            
    cuoi=kthuc;
            
    hetday 1;
            return 
    1;
        }
        else
        {
            
    cuoi--;
            
    hetday=0
            return 
    0;
        }
    }
    void tron(mang amang bint bdau1int cuoi1int bdau2int cuoi2)
    {
        
    int kij;
        for( 
    cuoi1 >= bdau1 i-- )
             
    b[i] = a[i];
        for( 
    bdau2 <= cuoi2 j++ )
                
    b[cuoi2 bdau2 j] = a[j];
        
    bdau1cuoi2;
        for( 
    bdau1 <= cuoi2 k++ )
        {
            if( 
    b[i] < b[j] )
            {
                
    a[k]=b[i];
                
    i++;
            }
            else
            {
                
    a[k] = b[j];
                
    j--;
            }
        }
        return;
    }
    void mergesort(mang aint n)
    {
        
    int sodchaybdau1cuoi1bdau2cuoi2hetday;
        
    mang b;
        do
        {
            
    sodchay 0;
            
    bdau1 0;
            
    hetday 0;
            while(!
    hetday)
            {
                
    tim1duongchay(an-1bdau1cuoi1hetday);
                
    sodchay++;
                if(!
    hetday)
                {
                    
    bdau2 cuoi1+1;
                    
    tim1duongchayan-1bdau2cuoi2hetday);
                    
    tronabbdau1cuoi1bdau2cuoi2);
                    
    bdau1 cuoi2 1;
                }
            }


        }while( 
    sodchay );
        return;

    Sharing for success!

  2. #2
    Ngày gia nhập
    09 2008
    Nơi ở
    Ở nhà chứ đâu... nhìn cái gì?!?!
    Bài viết
    218

    Lên google gõ "Merge Sort C#" có 1 đống. Từ những đoạn code trên C# so sánh với đoạn C++ trên và làm tiếp.
    Quá nản cái viễn cảnh hiện tại. Nhiều "thanh niên" sống "ảo" quá. Thời nào rồi mà còn hỏi WinForms + ADO.NET

  3. #3
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Merge Sort trong C# nhìn sáng sủa hơn trong C++ nhiều tuy nhiên sẽ rất khó khăn cho những ai đã từng kinh qua C++ mà học lên C#.
    Lời khuyên của mình sau khi đã nghiên cứu về C# là bạn nên ko biết gì cả thì sẽ nghiên cứu C# tốt hơn là 1 người rành về lập trình, rành về C++
    Visual C# Code:
    1. // Merges the left/right elements into a sorted result.
    2. // Precondition: left/right are sorted
    3. public static void merge(int[] result, int[] left, int[] right) {
    4.     int i1 = 0;   // index into left array
    5.     int i2 = 0;   // index into right array
    6.  
    7.     for (int i = 0; i < result.Length; i++) {
    8.         if (i2 >= right.Length || (i1 < left.Length && left[i1] <= right[i2])) {
    9.             result[i] = left[i1];    // take from left
    10.             i1++;
    11.         } else {
    12.             result[i] = right[i2];   // take from right
    13.             i2++;
    14.         }
    15.     }
    16. }
    17.  
    18. // Rearranges the elements of a into sorted order using
    19. // the merge sort algorithm (recursive).
    20. public static void mergeSort(int[] a) {
    21.     if (a.Length >= 2) {
    22.         // split array into two halves
    23.         int[] left = leftHalf(a);
    24.         int[] right = rightHalf(a);
    25.  
    26.         // sort the two halves
    27.         mergeSort(left);
    28.         mergeSort(right);
    29.  
    30.         // merge the sorted halves into a sorted whole
    31.         merge(a, left, right);
    32.     }
    33. }

  4. #4
    Ngày gia nhập
    03 2009
    Bài viết
    149

    Cảm ơn Bạn HUY NGUYEN Nhiều. để mình text thử đã . May Mắn Làm Sao Mình Học Kỳ Vừa Rồi Nghỉ Môn C++. Trong Cái Xui Lại Có Cái May.



    .
    Đã được chỉnh sửa lần cuối bởi angeltrongminh : 03-05-2009 lúc 08:43 AM.
    Sharing for success!

  5. #5
    Ngày gia nhập
    03 2009
    Bài viết
    149

    Trích dẫn Nguyên bản được gửi bởi O'Wicked Fox Xem bài viết
    Lên google gõ "Merge Sort C#" có 1 đống. Từ những đoạn code trên C# so sánh với đoạn C++ trên và làm tiếp.
    cái này mình tìm mỏi mắt rồi chứ bạn. bí quá lên đây nhờ anh em thôi mà
    Sharing for success!

  6. #6
    Ngày gia nhập
    03 2009
    Bài viết
    149

    Mặc định Merge Sort C# | sắp xếp mảng số nguyên trên c#

    này bạn ơi còn chỗ này nữa


    int[] left = leftHalf(a);
    int[] right = rightHalf(a);


    nó báo lỗi
    Error 1 The name 'leftHalf' does not exist in the current context F:\docurments\baitap\0710217_tieuluanso1CTDLGT1\07 10217_tieuluanso1CTDLGT1\frmtron.cs 126 30 0710217_tieuluanso1CTDLGT1

    Error 2 The name 'rightHalf' does not exist in the current context F:\docurments\baitap\0710217_tieuluanso1CTDLGT1\07 10217_tieuluanso1CTDLGT1\frmtron.cs 127 31 0710217_tieuluanso1CTDLGT1


    như vậy là sao nhỉ mình thiếu thư viện hay thiếu hàm nào đó phải không?
    Đã được chỉnh sửa lần cuối bởi angeltrongminh : 03-05-2009 lúc 08:52 AM.
    Sharing for success!

  7. #7
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Bó tay, tôi cố ý giấu cái đoạn đó để xem bạn có biết gì về thuật toán MergeSort hay ko, nếu hiểu thì có thể tự viết được đoạn đó, chỉ cần nắm được kiến thức C# 1 chút là được. Đoạn đó là chia dãy ra làm 2 phần. Đây là code đoạn đó:
    Visual C# Code:
    1. // Returns the first half of the given array.
    2. public static int[] leftHalf(int[] a) {
    3.     int size1 = a.Length / 2;
    4.     int[] left = new int[size1];
    5.     for (int i = 0; i < size1; ++i) {
    6.         left[i] = a[i];
    7.     }
    8.     return left;
    9. }
    10.  
    11. // Returns the second half of the given array.
    12. public static int[] rightHalf(int[] a) {
    13.     int size1 = a.Length / 2;
    14.     int size2 = a.Length - size1;
    15.     int[] right = new int[size2];
    16.     for (int i = 0; i < size2; ++i) {
    17.         right[i] = a[i + size1];
    18.     }
    19.     return right;
    20. }
    Nên nhớ đây chỉ là ví dụ về Merge Sort cho nên tôi mong muốn bạn viết lại đoạn này tốt hơn và post lên đây để mọi người cùng nghiên cứu nhé.
    Đã được chỉnh sửa lần cuối bởi huynguyen : 03-05-2009 lúc 09:15 AM.

  8. #8
    Ngày gia nhập
    03 2009
    Bài viết
    149

    thank bạn . nói thật là mình chưa hiểu nó mình chỉ biết sơ qua về c++ và mới học c# thôi. Nói thực thuật toán khá khó bài c++ trên là mình đánh trong giáo trình trên lớp text thử đang tìm hiểu về nó mà không dấu dốt được bạn ạ , không biết thì mình hỏi khi nào biết thì thôi.
    Đã được chỉnh sửa lần cuối bởi angeltrongminh : 03-05-2009 lúc 09:36 AM.
    Sharing for success!

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

    Merge Sort kiểu đường chạy khác với merge sort kiểu chia đôi :P
    code Merge Sort bằng C# với C++ viết sáng sủa thì em thấy tương đương với nhau , C# được cái là ko cần viết delete
    mà code của anh huynguyen xài tới 3 mảng phụ (left,right,result) trong khi chỉ cần truyền left với right như chỉ số là được.
    code ra gió bão

  10. #10
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Ui, anh nói rồi mà, đây là ví dụ và anh cố gắng viết 1 cách thoáng để mọi người nhìn thấy tư tưởng và thuật toán của merge sort chứ bình thường merge sort anh dùng đệ quy chạy cho nhanh

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

  1. Thuật toán C++ Ưu nhược điểm các kiểu sort Interchange sort, Selection sort, Insertion sort, Sharke sort , Quick sort, Heap sort
    Gửi bởi duythanhnguyen trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 7
    Bài viết cuối: 23-09-2013, 01:16 AM
  2. Lập trình C++ Natural Merge Sort trên file
    Gửi bởi nvtin 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: 21-10-2010, 03:31 PM
  3. Giúp em bài toán Mô phỏng thuật toán MERGE sort va RADIX Sort bằng C
    Gửi bởi mr.fan trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 03-06-2010, 09:34 AM
  4. Merge sort trên MFC
    Gửi bởi paparazzi trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 04-05-2010, 08:32 PM
  5. Nhờ tìm lỗi cài đặt Merge Sort
    Gửi bởi Cparadise trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 27-12-2008, 06:13 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