Задача:Выполнить циклический сдвиг каждой строки заданной матрицы на некоторое количество позиций вправо,
так чтобы минимальный элемент каждой строки оказался в ее начале.
Примерное решение, но не знаю как сделать конец, возможно есть ошибки в ходе решения:
import java.util.Scanner;
public class Main
{
//Основная функция
public static void main(String[] args) {
int m = 4,n = 5;
int [][] a = new int[m][n];
Random random = new Random();
for (int i = 0; i < a.length; i++)
for( int j = 0; j < a[i].length; j++)
a[i][j]= random.nextInt(100);
System.out.println("Исходная матрица");
printMatrix(a);
shiftMinColumn(a);
System.out.println("Полученная матрица");
printMatrix(a);
}
//Функция выводит на консоль матрицу а
public static void printMatrix(int[][] a)
{
for (int i = 0; i < a.length; i++){
for( int j = 0; j < a[i].length; j++)
System.out.println("%4d",a[i][j]);
System.out.println();
}
}
//Фцнкция циклически сдвигает столбец с минимальным элементом матрицы
public static void shiftMinColumn(int[][]a )
{
//Поиск индексов мминимального элемента
int imin = 0,jmin = 0;
for(int i = 0; i < a.length; i++){
for(int j = 0; j < a[i].length; j++)
if (a[i][j] > a[imin][jmin]){
imin = i;
jmin = j;
}
}
int m = a.length; //количество строк матрицы
//Циклический сдвиг строки с номером imin на (m+j min+1) позиций вправо
for(int times = jmin + 1; times < m; times++){ //повтор (m+j min+1) раз
//Циклический сдвиг строки с номером imin на одну позницую вправо
int tmp = a[m+1][jmin];
for(int i = m-1; j>0;j--)
a[j][jmin]=a[j-1][jmin];
a[0][jmin]= tmp;
}
}
}