Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 23 kết quả

Đề tài: Sắp xếp mảng n phần tử trên C#

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

    Talking Sắp xếp mảng n phần tử trên C#

    đề là: viết công thức sắp xếp mảng n phần tử sao cho số 0 ở giữa mảng;
    số chẵn tăng dần ở đầu mảng;số lẻ giảm dần ở cuối mảng.
    em chỉ biết làm sắp xếp một phần nhỏ theo tăng dần hoặc giảm dần thôi.chứ pha trộn kiểu này em pó tay,mọi người giúp em viết bằng c# chương trình console với;em cám ơn mọi người nhiều.
    không có tình yêu vĩnh cửu chỉ có những giây phút vĩnh cửu của tình yêu
    oooo0

  2. #2
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Bạn có thể dùng cách này : tạo thêm 2 mảng. Từ mảng ban đầu,đưa các phần tử chẵn vào 1 mảng,các phần tử lẻ vào 1 mảng.Xắp xếp 2 mảng đó rồi sau đó nối 2 mảng đó lại với nhau
    Cánh Chym ứ mỏi

  3. #3
    Ngày gia nhập
    02 2009
    Bài viết
    27

    thế còn các phần tử 0 thì sao?liệu mình có phải chia nhỏ ra làm không?ví dụ như : xem trong danh sách có fan tử 0 hay k?nếu có sắp xếp vào giữa,và phải xét có chẵn,lẻ hay k?vậy là phải xét hết các trường hợp phải k bạn?theo như bạn nói thì mình tạo thêm 2 mảng vậy câu lệnh nào để nối 2 phần tử đó và khi tạo thêm 2 mảng thì 2 mảng đó có cần phải tham chiếu đến nhau k?mong bạn chỉ rõ dùm mình nghen.con trai thật pro ^^
    không có tình yêu vĩnh cửu chỉ có những giây phút vĩnh cửu của tình yêu
    oooo0

  4. #4
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    O cũng là số chẵn mà bạn,nó sẽ nằm ở mảng chẵn luôn.
    Giả sử mảng ban đầu có có kích thước là size, mảng các số chẵn là size1,số lẻ là size2;trong đó size=size1+size2;
    Để nối 2 mảng thì có thể làm như sau
    PHP Code:
    for(i=0;i<size1;i++)
        
    arr[i]=chan[i];
    for(
    i=size1;i<size;i++)
        
    arr[i]=le[i]; 
    Cánh Chym ứ mỏi

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

    bạn ơi mình hiểu ý bạn nói nhưng để nối được 2 mảng như bạn nói có còn cách khác không bạn,lệnh arr[i]=chan[i]; arr[i]=le[i]; 2 lệnh này mình k hiểu lắm,lệnh arr là gì vậy bạn mình chưa có học giúp mìh nha
    không có tình yêu vĩnh cửu chỉ có những giây phút vĩnh cửu của tình yêu
    oooo0

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

    Mặc định Sắp xếp mảng n phần tử trên C#

    nếu được bạn giúp mình viết code luôn dc k?mình viết hoài mà k đc,mình chạy bằng tay mà vẫn k ra nè.thanks bạn nhiều nha bạn dieucay555
    không có tình yêu vĩnh cửu chỉ có những giây phút vĩnh cửu của tình yêu
    oooo0

  7. #7
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Đây bạn, ko có nhiều thời gian nên code nhanh cái này demo cho bạn, xem và chỉnh sửa lại cho phù hợp hơn ha
    Visual C# Code:
    1. int[] mangSo ={ 1, 5, 4,0, 2, 3, 7, 9, 10, 0, 32, 0, 14, 15, 17,0, 3, 5, 12, 9 };
    2.             int[] mangChan;
    3.             int[] mangLe;
    4.             //Đếm số phần tử chắn
    5.             int temp = 0;
    6.             for (int i = 0; i < mangSo.Length; i++)
    7.                 if (mangSo[i] % 2 == 0 && mangSo[i] != 0) temp++;
    8.             //Tạo mảng Chẵn và lưu vào
    9.             mangChan = new int[temp];
    10.             temp = 0;
    11.             for (int i = 0; i < mangSo.Length; i++)
    12.                 if (mangSo[i] % 2 == 0 && mangSo[i]!=0)
    13.                 {
    14.                     mangChan[temp] = mangSo[i];
    15.                     temp++;
    16.                 }
    17.             //Sắp xếp tăng dần mảng chẵn
    18.             for(int i=0;i<mangChan.Length-1;i++)
    19.                 for(int j=i+1;j<mangChan.Length;j++)
    20.                     if (mangChan[i] > mangChan[j])
    21.                     {
    22.                         temp = mangChan[i];
    23.                         mangChan[i] = mangChan[j];
    24.                         mangChan[j] = temp;
    25.                     }
    26.  
    27.             //Xư lý với phần tử lẻ
    28.             temp = 0;
    29.             for (int i = 0; i < mangSo.Length; i++)
    30.                 if (mangSo[i] % 2 != 0) temp++;
    31.             //Tạo mảng lẻ và lưu vào
    32.             mangLe = new int[temp];
    33.             temp = 0;
    34.             for (int i = 0; i < mangSo.Length; i++)
    35.                 if (mangSo[i] % 2 != 0)
    36.                 {
    37.                     mangLe[temp] = mangSo[i];
    38.                     temp++;
    39.                 }
    40.             //Sắp xếp giảm dần mảng lẻ
    41.             for(int i=0;i<mangLe.Length-1;i++)
    42.                 for(int j=i+1;j<mangLe.Length;j++)
    43.                     if (mangLe[i] < mangLe[j])
    44.                     {
    45.                         temp = mangLe[i];
    46.                         mangLe[i] = mangLe[j];
    47.                         mangLe[j] = temp;
    48.                     }
    49.             //Nối mảng
    50.             for(int i=0;i<mangChan.Length;i++)
    51.                 mangSo[i]=mangChan[i];
    52.             for (int i = 0; i < (mangSo.Length - (mangChan.Length + mangLe.Length)); i++)
    53.                 mangSo[mangChan.Length + i] = 0;
    54.             for (int i = 0; i < mangLe.Length; i++)
    55.                 mangSo[mangChan.Length+(mangSo.Length - (mangChan.Length + mangLe.Length))+i] = mangLe[i];
    56.             //In Mảng
    57.             Console.WriteLine("Mang chan:");
    58.             for (int i = 0; i < mangChan.Length; i++)
    59.                 Console.WriteLine(mangChan[i].ToString());
    60.             Console.WriteLine("Mang le:");
    61.             for (int i = 0; i < mangLe.Length; i++)
    62.                 Console.WriteLine(mangLe[i].ToString());
    63.             Console.WriteLine("Mang so da sap xep:");
    64.             for (int i = 0; i < mangSo.Length; i++)
    65.                 Console.WriteLine(mangSo[i].ToString());
    66.             Console.Read();
    Đã được chỉnh sửa lần cuối bởi Forlorn_hope : 20-03-2009 lúc 09:46 PM.
    Không biết ghi gì luôn ...

  8. #8
    Ngày gia nhập
    11 2007
    Nơi ở
    Biết để làm gì?
    Bài viết
    827

    Định post code lên thì Fh đã làm trước
    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Text;
    4.  
    5. namespace Sap_xep
    6. {
    7.     class Program
    8.     {
    9.         static void Main(string[] args)
    10.         {
    11.             int[] myArr=new int[10]{8,5,1,7,2,6,0,3,11,4};
    12.  
    13.             int count = 0;//bien nay de dem xem mang co bao nhieu so chan
    14.             int i = 0;
    15.             Console.WriteLine("Array:");
    16.             for (i=0; i < myArr.Length;i++ )
    17.             {
    18.                 Console.Write("{0}\t", myArr[i]);
    19.                 if (myArr[i] % 2 == 0)
    20.                     count++;
    21.             }
    22.             Console.WriteLine("\n");
    23.            //2 mang phu de chua cac phan tu chan,le
    24.             int[] chan = new int[count];
    25.             int size = myArr.Length - count;
    26.             int[] le = new int[size];
    27.             int even = 0, oll = 0;
    28.             for (i= 0; i < myArr.Length;i++ )
    29.             {
    30.                 if(myArr[i]%2==0)
    31.                 {
    32.                     chan[even] = myArr[i];
    33.                     even = even + 1;
    34.                 }
    35.                 else
    36.                 {
    37.                     le[oll]= myArr[i];
    38.                     oll = oll + 1;
    39.                 }
    40.             }
    41.             //sap xep 2 mang chan le
    42.             Array.Sort(chan);
    43.             Array.Sort(le);
    44.             Array.Reverse(chan);
    45.  
    46.             //noi mang
    47.             for (i = 0; i < chan.Length; i++)
    48.                 myArr[i] = chan[i];
    49.             for (i = 0; i < le.Length; i++)
    50.                 myArr[chan.Length + (myArr.Length - (chan.Length + le.Length)) + i] = le[i];
    51.             Console.WriteLine("Array after sorted :")
    52.            
    53.             for (i = 0; i < myArr.Length; i++)
    54.                 Console.Write("{0}\t", myArr[i]);
    55.                
    56.         }
    57.     }
    58. }
    Đã được chỉnh sửa lần cuối bởi dieucay555 : 20-03-2009 lúc 10:15 PM.
    Cánh Chym ứ mỏi

  9. #9
    Ngày gia nhập
    02 2009
    Bài viết
    27

    cám ơn các bạn nha để ánh xem chỗ nào ánh chưa hiểu ánh nhờ mọi ng giúp ánh nha
    không có tình yêu vĩnh cửu chỉ có những giây phút vĩnh cửu của tình yêu
    oooo0

  10. #10
    Ngày gia nhập
    10 2007
    Nơi ở
    Gameloft studio
    Bài viết
    175

    Trích dẫn Nguyên bản được gửi bởi dieucay555 Xem bài viết
    Định post code lên thì Fh đã làm trước
    Hic, chỉ là cảm thấy có thể giúp được nên FL làm nhanh cái demo giúp bạn đó thôi, nếu mà nãy giờ chat với cậu, biết cậu đang code thì tớ xem cái khác rồi, hee :d
    Đã được chỉnh sửa lần cuối bởi Forlorn_hope : 20-03-2009 lúc 10:29 PM.
    Không biết ghi gì luôn ...

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

  1. Trả lời: 13
    Bài viết cuối: 13-12-2012, 11:30 AM
  2. Phần mềm lập trình C chạy trên tablet Android là phần mềm gì?
    Gửi bởi trieunghi trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 06-10-2012, 08:21 PM
  3. Phần mềm viết code và chạy c++ trên ubuntu 10 là phần mềm gì?
    Gửi bởi vipnho0209 trong diễn đàn Công cụ, Tài liệu lập trình trên Linux
    Trả lời: 7
    Bài viết cuối: 07-04-2011, 10:49 AM
  4. Thuật toán trên C | Xóa phần tử trong dãy phần tử tăng dần?
    Gửi bởi quangphuit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-03-2010, 01:57 PM
  5. DSLK | Danh sách liên kết trên C| Xoá phần tử ở sau phần tử q
    Gửi bởi 7261819 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 17
    Bài viết cuối: 24-06-2009, 05:48 AM

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