Поиск минимальных элементов в двумерном массиве - C#
Формулировка задачи:
Задача:
Составить команду из четырех лучших бегунов для участия в эстафете 4×100.
Нужно выбрать из двумерного массива 4 минимальных элемента.Я знаю один довольно простой метод через сравнения, но он здесь не эффективен так как у спортсменов могут быть одинаковые результаты, а получиться так что берут только одного, а остальные отбрасываются.
Неэффективный метод ниже.
Посоветуйте еще какие либо более эффективные методы. Только не LINQ так как там используются лямбда выражения, которые мы не проходили и я не имею понятия как это работает
int min = int.MinValue; int min2 = int.MinValue; int min3 = int.MinValue; int min4 = int.MinValue; int[,] Table = new int[N,N]; for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) Table[i,j] = (int)dataGridView1[i, j].Value; for(int i=0;i<N;i++) for(int j=0;j<N;j++) { if(Table[i,j]>min) min = Table[i, j]; if (Table[i, j]>min2 && min > Table[i, j]) min2 = Table[i, j]; if (Table[i, j] > min3 && min2 > Table[i, j]) min3 = Table[i, j]; if (Table[i, j] > min4 && min3 > Table[i, j]) min4 = Table[i, j]; } textBox1.Text += "Спортсмен 1-" + min + "\r\n"; textBox1.Text += "Спортсмен 2-" + min2 + "\r\n"; textBox1.Text += "Спортсмен 3-" + min3 + "\r\n"; textBox1.Text += "Спортсмен 4-" + min4 + "\r\n"; } }
Решение задачи: «Поиск минимальных элементов в двумерном массиве»
textual
Листинг программы
//для бегунов будет минимум, а вот для пауэрлифтеров, наоборот должен быть максимум min1=min2=min3=min4=Int32.Max; //индекс чтоб отличить двух одинаковых int id1, id2, id3, id4; id1=id2=id3=id4=-1; for(int i=0;i<N;i++) for(int j=0;j<N;j++) { if(Table[i,j]<min1) { min1 = Table[i, j];id1=i*N+j; } //если это не тот спортсмен что и первый, но с тем же результатом if(min1==Table[i, j] && (i*N+j)!=id1) { min2=Table[i, j]; id2=i*N+j; } //если не с тем же результатом, что первый, но лучшим, чем у прошлого второго else if (Table[i, j]<min2) { min2 = Table[i, j]; id2=i*N+j; } if(min2==Table[i, j] && (i*N+j)!=id2) { min3=Table[i, j]; id3=i*N+j; } else if (Table[i, j]<min3) { min3 = Table[i, j]; id3=i*N+j; } if(min3==Table[i, j] && (i*N+j)!=id3) { min4=Table[i, j]; id4=i*N+j; } else if (Table[i, j]<min4) { min4 = Table[i, j]; id4=i*N+j; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д