01/10/2018, 08:21

Tìm số lớn nhì trong mảng 1 chiều

như tiêu đề bài như thế. Ý tưởng của e là như thế này cá bác thấy đúng không. Cho 1 cái mảng em sắp xếp nó lại theo tăng dần rồi em in ra cái phần tử thứ n-2 là phần tử nhỏ thứ 2. Code em viết bằng c# nên các bác cho em ý kiến với. Hay có cách nào khác

  int n = int.Parse(Console.ReadLine());
             int[] a = new int[100];
             for (int i = 0; i < n; i++)
             {
                 a[i] = int.Parse(Console.ReadLine());
             }
             int temp;
             Console.WriteLine("mang tang dan la: ");
             for (int i = 0; i < n -1; i++)
             {
                 for (int j = i+1; j < n; j++)
                 {
                     if(a[j]<a[i])
                     {
                         temp = a[i];
                         a[i] = a[j];
                         a[j] = temp;
                     }
                 }
             }
             for (int i = 0; i < n; i++)
             {
                 Console.WriteLine(a[i]);
             }
             Console.WriteLine("so lon 2: ");
             Console.WriteLine(a[n-2]);
             Console.ReadLine();
Tao Không Ngu. viết 10:34 ngày 01/10/2018

Hi chương.
Nếu bạn dùng C# và vẫn nhất quyết xắp xếp trước thì nên tìm hiểu hàm Sort trong C# trước.
Còn nếu không thì vừa tìm lớn nhất và lớn thứ 2 luôn trong 1 vòng for.

chương viết 10:30 ngày 01/10/2018

c thì nên tìm hiểu hàm Sort trong C# trước.Còn nếu không thì vừa tìm lớn nhất và lớn thứ 2 l

thế tìm trong 1 vòng for thì sao hở bác

Tao Không Ngu. viết 10:27 ngày 01/10/2018

Hi chương.
Bạn tìm số lớn nhất như thế nào ?

chương viết 10:35 ngày 01/10/2018

cho 1 biến max bằng a[0] rồi duyệt mảng max < a[i] thì cái max nó bằng a[i] bác

Tao Không Ngu. viết 10:37 ngày 01/10/2018

Hi chương.
Khi max < a[i] thì không phải max là số lớn thứ 2 trong dãy a[0] -> a[i] à ?

chương viết 10:25 ngày 01/10/2018

max

for (int i = 0; i < n; i++)
{
if(a[i]>max)
{
max = a[i];
max2 = max;
}
}
như thế không biết đã đúng chưa bác

Tao Không Ngu. viết 10:25 ngày 01/10/2018

Hi chương.
Test thử thì biết.
1 Mảng có ít hơn 2 phần tử.
2 Khởi tạo giá trị các biến.
3 Tách các hàm con như nào.
4 Code format nữa. @_@!

chương viết 10:28 ngày 01/10/2018

trị các biến.3 Tách các hàm con như nào.4 Code format nữa

ý em là chỉ tính với cái mảng nhiều phần tử trước còn tối ưu mình sẽ tối ưu sau bác

Tao Không Ngu. viết 10:27 ngày 01/10/2018

Hi chương.
Viết đến cùng đi dừng lại giữa đường đâu có kết quả gì @_@!

chương viết 10:34 ngày 01/10/2018

ý em là chỉ tính với cái mảng nhiều phần tử trước còn tối

vấn đề là nó vẫn chưa ra kết quả này bác

Trần Hoàn viết 10:24 ngày 01/10/2018

Đã dùng C# thì nên tận dụng các hàm có sẵn, bạn viết ra có thể nó nhanh hơn được 1-2% nhưng mà nó lỗi cũng vui đấy :v
Đây là hàm trả về số lớn thứ nhì của một mảng số thực Input[]

static double LonThuNhi(double[] Input)
{
    if (Input.Length < 2) 
        throw new System.ArgumentOutOfRangeException();
    var SortedList = Input;
    System.Array.Sort(SortedList);
    return SortedList[SortedList.Length-2];
}
chương viết 10:34 ngày 01/10/2018

Đã dùng C# thì nên tận dụng các hàm có sẵn, bạn viết ra có thể nó nhanh hơn được 1-2% nhưng mà nó lỗi cũng vui đấy :vĐây là hàm trả về số lớn thứ nhì của một mảng số thực Input[]

thank các bác em làm ra rồi. Không cần sử dụng hàm có sẵn

Bài liên quan
0