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();

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.

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

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

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

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] à ?

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

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. @_@!

ý 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

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

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

Đã 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];
}

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

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?