# Đề tài: Chuyển mã C# giùm

1. Thành viên mới
Ngày gia nhập
01 2008
Bài viết
1

## Chuyển mã C# giùm

Visual C# Code:
1. // method to call merge sort:
2. void mergeSort(int numbers[], int temp[], int array_size)
3. {
4.   m_sort(numbers, temp, 0, array_size - 1);
5. }
6.
7. // helper method to include two bound
8. void m_sort(int numbers[], int temp[], int left, int right)
9. {
10.   int mid;
11.
12.   if (right > left)
13.   {
14.     // first devide the array in two parts
15.     mid = (right + left) / 2;
16.
17.     // then recursively sort each half til right == left
18.     m_sort(numbers, temp, left, mid);
19.     m_sort(numbers, temp, mid+1, right);
20.
21.     // merge them back, now that two half are sorted:
22.     merge(numbers, temp, left, mid+1, right);
23.   }
24. }
25.
26. // merge two array:
27. void merge(int numbers[], int temp[], int left, int mid, int right)
28. {
29.   int i, left_end, num_elements, tmp_pos;
30.
31.   left_end = mid - 1;
32.   tmp_pos = left;
33.   num_elements = right - left + 1;
34.
35. // walk through each, put the smallest left-over in either left side
36. // or right side to the temp array in each iteration.
37.   while ((left <= left_end) && (mid <= right))
38.   {
39.     if (numbers[left] <= numbers[mid])
40.     {
41.       temp[tmp_pos] = numbers[left];
42.       tmp_pos = tmp_pos + 1;
43.       left = left +1;
44.     }
45.     {
46.       temp[tmp_pos] = numbers[mid];
47.       tmp_pos = tmp_pos + 1;
48.       mid = mid + 1;
49.     }
50.   }
51.
52. // then put the left over in the two array, if any.
53.   while (left <= left_end)
54.   {
55.     temp[tmp_pos] = numbers[left];
56.     left = left + 1;
57.     tmp_pos = tmp_pos + 1;
58.   }
59.   while (mid <= right)
60.   {
61.     temp[tmp_pos] = numbers[mid];
62.     mid = mid + 1;
63.     tmp_pos = tmp_pos + 1;
64.   }
65.
66. // copy the array back to its original array:
67.   for (i=0; i <= num_elements; i++)
68.   {
69.     numbers[right] = temp[right];
70.     right = right - 1;
71.   }
72. }

mình chưa học C/C++ ai có thể chuyển toàn bộ đoạn code trên wa C# giùm mình với. Mình không thấy chỗ giúp đỡ về C# trong diễn đàn. Nên đành post bài ở đây. Nếu sai chỗ xin Mod hay Admin move giùm nhé. Cám ơn rất nhiều

Vui lòng để code vào tag code, chứ không phải tag quote. Đọc Nội quy để biết thêm chi tiết
Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 16-03-2008 lúc 12:14 AM. Lý do: Nhắc nhở tag code

2. Thực ra thì nó cũng chả có gì khác, ngôn ngữ đem ra so sánh trong bài này thì cũng chỉ là cách mô tả khác nhau thôi. Đừng quan tâm khi thấy khai báo static, do nếu muốn gọi sử dụng trong hàm main là static thì các phuơng thức cũng phải static thôi. Mà cái bài này không thấy mãng kết quả được trả về.

Visual C# Code:
1.     class Program
2.     {
3.         static void Main(string[] args)
4.         {
5.             //Gọi các hàm mergesort ở đây
6.         }
7.
8.         // method to call merge sort:
9.         static void mergeSort(int[] numbers, int[] temp, int array_size)
10.         {
11.             m_sort(numbers, temp, 0, array_size - 1);
12.         }
13.
14.         // helper method to include two bound
15.         static void m_sort(int[] numbers, int[] temp, int left, int right)
16.         {
17.             int mid;
18.
19.             if (right > left)
20.             {
21.                 // first devide the array in two parts
22.                 mid = (right + left) / 2;
23.
24.                 // then recursively sort each half til right == left
25.                 m_sort(numbers, temp, left, mid);
26.                 m_sort(numbers, temp, mid+1, right);
27.
28.                 // merge them back, now that two half are sorted:
29.                 merge(numbers, temp, left, mid+1, right);
30.             }
31.         }
32.
33.         // merge two array:
34.         static void merge(int[] numbers, int[] temp, int left, int mid, int right)
35.         {
36.             int i, left_end, num_elements, tmp_pos;
37.
38.             left_end = mid - 1;
39.             tmp_pos = left;
40.             num_elements = right - left + 1;
41.
42.             // walk through each, put the smallest left-over in either left side
43.             // or right side to the temp array in each iteration.
44.             while ((left <= left_end) && (mid <= right))
45.             {
46.                 if (numbers[left] <= numbers[mid])
47.                 {
48.                     temp[tmp_pos] = numbers[left];
49.                     tmp_pos = tmp_pos + 1;
50.                     left = left +1;
51.                 }
52.                 {
53.                     temp[tmp_pos] = numbers[mid];
54.                     tmp_pos = tmp_pos + 1;
55.                     mid = mid + 1;
56.                 }
57.             }
58.
59.         // then put the left over in the two array, if any.
60.             while (left <= left_end)
61.             {
62.                 temp[tmp_pos] = numbers[left];
63.                 left = left + 1;
64.                 tmp_pos = tmp_pos + 1;
65.             }
66.
67.             while (mid <= right)
68.             {
69.                 temp[tmp_pos] = numbers[mid];
70.                 mid = mid + 1;
71.                 tmp_pos = tmp_pos + 1;
72.             }
73.
74.         // copy the array back to its original array:
75.             for (i=0; i <= num_elements; i++)
76.             {
77.                 numbers[right] = temp[right];
78.                 right = right - 1;
79.             }
80.         }
81.     }

3. Thành viên mới
Ngày gia nhập
01 2008
Bài viết
1
cám ơn pác sunflower nhiều lắm. Mình kiếm hoài code sắp sếp bằng Merge Sort của C# nhưng không có . Chỉ có code C/C++ thôi. Cám ơn vô cùng

4. Nguyên bản được gửi bởi metallica87
cám ơn pác sunflower nhiều lắm. Mình kiếm hoài code sắp sếp bằng Merge Sort của C# nhưng không có . Chỉ có code C/C++ thôi. Cám ơn vô cùng
Bạn phải xem thử thuật toán thế nào chứ lấy code C/C++ đem chuyển sang C# thì bạn cũng chẳng hiểu gì về thuật toán rồi.

5. Thành viên mới
Ngày gia nhập
01 2008
Bài viết
1
Bạn phải xem thử thuật toán thế nào chứ lấy code C/C++ đem chuyển sang C# thì bạn cũng chẳng hiểu gì về thuật toán rồi.
Bạn không hiểu mình rồi. Nếu mình có thời gian thì mình đã học thêm C/C++ rồi và mình đâu cần phải nhờ member của diễn đàn giúp đỡ đâu. Nói chính xác là là mình không hiểu những từ khóa ở trong C/C++ => Ko hiểu thuật toán nó viết về cái gì và làm chức năng gì.

6. ## Chuyển mã C# giùm

Nguyên bản được gửi bởi metallica87
Bạn không hiểu mình rồi. Nếu mình có thời gian thì mình đã học thêm C/C++ rồi và mình đâu cần phải nhờ member của diễn đàn giúp đỡ đâu. Nói chính xác là là mình không hiểu những từ khóa ở trong C/C++ => Ko hiểu thuật toán nó viết về cái gì và làm chức năng gì.
Bạn càng hiểu sai ý mình. Thuật toán và C/C++ khác nhau. Bạn hiểu được thuật toán thì có thể cài đặt với bất kỳ ngôn ngữ gì. Ý mình muốn nói bạn nên tìm hiểu thuật toán đó, rồi code bằng C# thì hay hơn là nhờ thành viên chuyển code, bởi sau khi chuyển liệu bạn đọc lại code C# có hiểu được thuật toán hay không?
Bạn hiểu ý mình chứ? Chỉ là một lời góp ý.

#### 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