Как найти минимальный элемент строки массива

Вы же используете numpy. Ну так и воспользуйтесь его инструментарием:

import numpy as np

a=np.array ([[0, 2.4, -6, 5, 0.8], 
             [1.5, 0, 0, -4.3, -3.5], 
             [0, 1.8, 3.2, -1.2, -1.3],
             [0, 0, -2.3, 0, -7.2],
             [3.3, -0.8, 0, 3.5, 8]])
res = a.min(axis=1)
print(res)

[-6. -4.3 -1.3 -7.2 -0.8]

параметр axis указывает, где искать минимумы — 0 — строки, 1 — столбцы

0 / 0 / 0

Регистрация: 04.03.2011

Сообщений: 39

1

25.11.2011, 19:18. Показов 7022. Ответов 8


Студворк — интернет-сервис помощи студентам

Дана матрица размера M<=N. В каждой строке матрицы найти минимальный элемент.
Нужен только алгоритм.



0



25 / 14 / 4

Регистрация: 11.11.2011

Сообщений: 94

25.11.2011, 19:27

2

берешь одну строку. и пробегаешь от первого элемента до последнего, сравнивая один элемент со следующим. сохраняешь. потом вторая строка… и тд



0



Сыроежка

Заблокирован

25.11.2011, 19:47

3

Цитата
Сообщение от HappyFanik
Посмотреть сообщение

Дана матрица размера M<=N. В каждой строке матрицы найти минимальный элемент.
Нужен только алгоритм.

Алгоритм этот называется std::min_element и объявлен в заголовочном файле <algorithm>



0



0 / 0 / 0

Регистрация: 04.03.2011

Сообщений: 39

27.11.2011, 13:28

 [ТС]

4

Пример напиши пожалуйста для массива mas[i][j];

min_element(что тут писать?);

Добавлено через 17 часов 34 минуты
Никто не знает?



0



Boogi43

4 / 4 / 2

Регистрация: 25.11.2011

Сообщений: 56

27.11.2011, 15:13

5

алгоритм такой (массив A[M][N])

C++
1
2
3
4
5
6
7
8
9
10
for (i=0; i<M; i++) \перебираем строки
    {    
         min=A[i][1] \задаём, относительно чего искать, как говорится, всё в мире относительно
         for(j=o; j<N; j++) \перебираем все ячейки в этой строке
              {
                     if (A[i][j]<min)  \ищем минимальное значениее
                         min=A[i][j];
               {
          cout<< "Минимальный элемент для " << i << "-ой строки равен " << min;
    }



0



1552 / 918 / 193

Регистрация: 26.03.2010

Сообщений: 3,105

27.11.2011, 15:19

6

только в 4-ой строке A[i][0]
)



0



soon

2554 / 1319 / 178

Регистрация: 09.05.2011

Сообщений: 3,086

Записей в блоге: 1

27.11.2011, 15:21

7

Да и в цикле не буква о а ноль должен быть

Цитата
Сообщение от Boogi43
Посмотреть сообщение

for(j=o; j<N; j++)

C++
1
for(j=0; j<N; j++)



0



go

Эксперт С++

3646 / 1378 / 243

Регистрация: 16.04.2009

Сообщений: 4,526

27.11.2011, 15:57

8

Цитата
Сообщение от neske
Посмотреть сообщение

только в 4-ой строке A[i][0]

без разницы, ошибки не будут, так как

Цитата
Сообщение от HappyFanik
Посмотреть сообщение

M<=N

Не по теме:

только если не

C++
1
int arr[0][0]



0



24 / 8 / 17

Регистрация: 22.12.2015

Сообщений: 2,097

22.04.2017, 21:48

9

Цитата
Сообщение от Boogi43
Посмотреть сообщение

алгоритм такой (массив A[M][N])

А как сделать для столбцов мин элемнт с выводом его самого+вывод индекс где нашли мин элемент.



0



Given a matrix, the task is to find the minimum element of each row and each column.

Examples: 

Input: [1, 2, 3]
        [1, 4, 9]
        [76, 34, 21]
Output: Minimum element of each row is {1, 1, 21}
Minimum element of each column is {1, 2, 3}

Input: [1, 2, 3, 21]
       [12, 1, 65, 9]
       [11, 56, 34, 2]
Output: Minimum element of each row is {1, 1, 2}
Minimum element of each column is {1, 2, 3 , 2}

Approach: The idea is to run the loop for no_of_rows. Check each element inside the row and find for the minimum element. Finally, print the element. Similarly, check each element inside the column and find for the minimum element. Finally, print the element.

Below is the implementation of the above approach:

C++

#include<bits/stdc++.h>

using namespace std;

const int MAX = 100;

void smallestInRow(int mat[][MAX], int n, int m)

{

    cout << " { ";

    for (int i = 0; i < n; i++) {

        int minm = mat[i][0];

        for (int j = 1; j < m; j++) {

            if (mat[i][j] < minm)

                minm = mat[i][j];

        }

        cout << minm << ", ";

    }

    cout << "}";

}

void smallestInCol(int mat[][MAX], int n, int m)

{

    cout << " { ";

    for (int i = 0; i < m; i++) {

        int minm = mat[0][i];

        for (int j = 1; j < n; j++) {

            if (mat[j][i] < minm)

                minm = mat[j][i];

        }

        cout << minm << ", ";

    }

    cout << "}";

}

int main()

{

    int n = 3, m = 3;

    int mat[][MAX] = { { 2, 1, 7 },

                       { 3, 7, 2 },

                       { 5, 4, 9 } };

    cout << "Minimum element of each row is ";

    smallestInRow(mat, n, m);

    cout << "nMinimum element of each column is ";

    smallestInCol(mat, n, m);

    return 0;

}

C

#include <stdio.h>

#define MAX 100

void smallestInRow(int mat[][MAX], int n, int m)

{

  printf(" { ");

  for (int i = 0; i < n; i++) {

    int minm = mat[i][0];

    for (int j = 1; j < m; j++) {

      if (mat[i][j] < minm)

        minm = mat[i][j];

    }

    printf("%d, ",minm);

  }

  printf("}");

}

void smallestInCol(int mat[][MAX], int n, int m)

{

  printf(" { ");

  for (int i = 0; i < m; i++) {

    int minm = mat[0][i];

    for (int j = 1; j < n; j++) {

      if (mat[j][i] < minm)

        minm = mat[j][i];

    }

    printf("%d, ",minm);

  }

  printf("}");

}

int main()

{

  int n = 3, m = 3;

  int mat[][MAX] = { { 2, 1, 7 },

                    { 3, 7, 2 },

                    { 5, 4, 9 } };

  printf("Minimum element of each row is ");

  smallestInRow(mat, n, m);

  printf("nMinimum element of each column is ");

  smallestInCol(mat, n, m);

  return 0;

}

Java

public class GFG {

    final static int MAX = 100;

    static void smallestInRow(int mat[][], int n, int m) {

        System.out.print(" { ");

        for (int i = 0; i < n; i++) {

            int minm = mat[i][0];

            for (int j = 1; j < m; j++) {

                if (mat[i][j] < minm) {

                    minm = mat[i][j];

                }

            }

            System.out.print(minm + ", ");

        }

        System.out.println("}");

    }

    static void smallestInCol(int mat[][], int n, int m) {

        System.out.print(" { ");

        for (int i = 0; i < m; i++) {

            int minm = mat[0][i];

            for (int j = 1; j < n; j++) {

                if (mat[j][i] < minm) {

                    minm = mat[j][i];

                }

            }

            System.out.print(minm + ", ");

        }

        System.out.print("}");

    }

    public static void main(String args[]) {

        int n = 3, m = 3;

        int mat[][] = {{2, 1, 7},

        {3, 7, 2},

        {5, 4, 9}};

        System.out.print("Minimum element of each row is ");

        smallestInRow(mat, n, m);

        System.out.print("nMinimum element of each column is ");

        smallestInCol(mat, n, m);

    }

}

Python3

MAX = 100

def smallestInRow(mat, n, m):

    print("{", end = "")

    for i in range(n):

        minm = mat[i][0]

        for j in range(1, m, 1):

            if (mat[i][j] < minm):

                minm = mat[i][j]

        print(minm, end = ",")

    print("}")

def smallestInCol(mat, n, m):

    print("{", end = "")

    for i in range(m):

        minm = mat[0][i]

        for j in range(1, n, 1):

            if (mat[j][i] < minm):

                minm = mat[j][i]

        print(minm, end = ",")

    print("}")

if __name__ == '__main__':

    n = 3

    m = 3

    mat = [[2, 1, 7],

           [3, 7, 2 ],

           [ 5, 4, 9 ]];

    print("Minimum element of each row is",

                                 end = " ")

    smallestInRow(mat, n, m)

    print("Minimum element of each column is",

                                    end = " ")

    smallestInCol(mat, n, m)

C#

using System;

class GFG

{

readonly static int MAX = 100;

static void smallestInRow(int [,]mat,

                          int n, int m)

{

    Console.Write(" { ");

    for (int i = 0; i < n; i++)

    {

        int minm = mat[i, 0];

        for (int j = 1; j < m; j++)

        {

            if (mat[i, j] < minm)

            {

                minm = mat[i, j];

            }

        }

        Console.Write(minm + ", ");

    }

    Console.WriteLine("}");

}

static void smallestInCol(int [,]mat,

                          int n, int m)

{

    Console.Write(" { ");

    for (int i = 0; i < m; i++)

    {

        int minm = mat[0, i];

        for (int j = 1; j < n; j++)

        {

            if (mat[j, i] < minm)

            {

                minm = mat[j, i];

            }

        }

        Console.Write(minm + ", ");

    }

    Console.Write("}");

}

public static void Main()

{

    int n = 3, m = 3;

    int [,]mat = {{2, 1, 7},

                   {3, 7, 2},

                  {5, 4, 9}};

    Console.Write("Minimum element of " +

                         "each row is ");

    smallestInRow(mat, n, m);

    Console.Write("nMinimum element of " +

                        "each column is ");

    smallestInCol(mat, n, m);

}

}

PHP

<?php

$MAX = 100;

function smallestInRow(&$mat, $n, $m)

{

    echo " { ";

    for ($i = 0; $i < $n; $i++)

    {

        $minm = $mat[$i][0];

        for ($j = 1; $j < $m; $j++)

        {

            if ($mat[$i][$j] < $minm)

                $minm = $mat[$i][$j];

        }

        echo $minm . ", ";

    }

    echo "}";

}

function smallestInCol(&$mat, $n, $m)

{

    echo " { ";

    for ($i = 0; $i < $m; $i++)

    {

        $minm = $mat[0][$i];

        for ($j = 1; $j < $n; $j++)

        {

            if ($mat[$j][$i] < $minm)

                $minm = $mat[$j][$i];

        }

        echo $minm . ", ";

    }

    echo "}";

}

$n = 3;

$m = 3;

$mat = array(array( 2, 1, 7 ),

             array( 3, 7, 2 ),

             array( 5, 4, 9 ));

echo "Minimum element of each row is ";

smallestInRow($mat, $n, $m);

echo "nMinimum element of each column is ";

smallestInCol($mat, $n, $m);

?>

Javascript

<script>

let MAX = 100;

    function smallestInRow(mat,n,m) {

        document.write(" { ");

        for (let i = 0; i < n; i++) {

            let minm = mat[i][0];

            for (let j = 1; j < m; j++) {

                if (mat[i][j] < minm) {

                    minm = mat[i][j];

                }

            }

            document.write(minm + ", ");

        }

        document.write("}"+"<br>");

    }

    function smallestInCol(mat,n,m) {

        document.write(" { ");

        for (let i = 0; i < m; i++) {

            let minm = mat[0][i];

            for (let j = 1; j < n; j++) {

                if (mat[j][i] < minm) {

                    minm = mat[j][i];

                }

            }

            document.write(minm + ", ");

        }

        document.write("}");

    }

        let n = 3, m = 3;

        let mat = [[2, 1, 7],

        [3, 7, 2],

        [5, 4, 9]];

        document.write("Minimum element of each row is ");

        smallestInRow(mat, n, m);

        document.write("nMinimum element of each column is ");

        smallestInCol(mat, n, m);

</script>

Output

Minimum element of each row is  { 1, 2, 4, }
Minimum element of each column is  { 2, 1, 2, }

Complexity Analysis:

  • Time complexity: O(n*m), as we are using nested for loops to traverse the Matrix.
  • Auxiliary Space: O(1), as we are not using any extra space.

Last Updated :
09 Sep, 2022

Like Article

Save Article

Часто сталкиваюсь с проблемой понимания кода, вернее его написания. Когда вроде бы читаешь и понимаешь какая строка что делает, а сам такое повторить почему то не можешь. Но проблемы проблемами, а задачи нужно решать, и так
Дан двумерный массив размером 5х6, заполненный случайным образом. Заменить максимальный элемент каждой строки на противоположный. Написал что-то вроде этого

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int m,n,i,j;
System.out.print("Введите количество строк = ");
m = in.nextInt();
System.out.print("Введите количество столбцов = ");
n = in.nextInt();
int[][] mass = new int[m][n]; // создание массива
for (i=0;i<m;i++) {
for (j=0;j<n;j++) {
mass [i][j]=(int) (Math.random()*(20)+1);}}
for (i=0;i<n;i++){
for (j=0;j<n;j++){
System.out.printf("%d ",mass[i][j]);
}
System.out.println(""); // его заполнение и вывод
}
int max, maxi = 0;
for(i=0;i<n;i++) {
max = mass[i][0];
if (mass[i][0]>=max){
max = mass[i][0];
maxi=i; // тут постарался найти максимальный элемент чтобы в будущем заменить
}
}
}
}

Далее, как я понимаю, нужно найти еще и минимальный элемент, чтобы в будущем maxi заменить на mini, но как это сделать?(К сожалению сейчас не могу попробовать тк нет под рукой нетбинса)
может примерно так?

int min, mini = 0;
for(i=0;i<n;i++) {
min = mass[i][0];
if (mass[i][0]<=min) {
min = mass[i][0];
mini = i;

и потом просто max = min? а вывести это как?
Заранее спасибо за ответ, и просто тем, кто прочел эту гору текста

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    internal class Program
    {
        public static void Main()
        {
           Massiv mas= new Massiv();
 
           for (int i = 0; i < mas.LengthI; i++)
           {
               
               for (int j = 0; j < mas.LengthJ; j++)
               {
 
                   Console.WriteLine("a[" + i + "," + j + "]={0}",mas[i,j]);
               }
               
           }
         
            //поиск минимального элемента
            for (int i = 0; i < mas.LengthI; i++)
            {
                double min = double.MaxValue;
                int indexI = 0, indexJ = 0;
                for (int j = 0; j < mas.LengthJ; j++)
                {
                    if (min > mas[i, j])
                    {
                        min = mas[i, j];
                        indexI = i;
                        indexJ = j;
 
                    }
 
                }
                Console.WriteLine("min is={0}, and indes is={1},{2}", min, indexI, indexJ); //вывод минимального
            }
 
 
            Console.ReadKey();
        }
    }
 
    class Massiv
    {
        public double[,] a;
        public Massiv()
        {
            int n = 2;
            int m = 2;
            a = new double[n, m];
            Random rand = new Random();
            for (int i = 0; i < a.GetUpperBound(0); i++)
            {
                for (int j = 0; j < a.GetUpperBound(1); j++)
                {
 
                    a[i, j] = rand.Next(-100, 100);
                }
            }
        }
 
        public Massiv(int n,int m)
        {
            a = new double[n, m];
            Random rand = new Random();
            for (int i = 0; i <= a.GetUpperBound(0); i++)
            {
                for (int j = 0; j <= a.GetUpperBound(1); j++)
                {
                    a[i,j]=rand.Next(-100, 100);
                   
                }
            }
        }
 
     
        // To enable client code to validate input 
        // when accessing your indexer.
        public int LengthI
        {
            get { return a.GetLength(0); }
        }
 
        public int LengthJ
        {
            get { return a.GetLength(1); }
        }
        // Indexer declaration.
        // If index is out of range, the temps array will throw the exception.
        public double this[int indexI,int indexJ]
        {
            get
            {
                return a[indexI, indexJ];
            }
 
            set
            {
                a[indexI, indexJ] = value;
            }
        }
    }
}

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как найти частное значение функции в точке
  • Как найти середину интервала значений в статистике
  • Как найти все влияющие ячейки
  • Как найти собственника сервитута
  • Как найти квесты на учи ру

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии