Предмет: Информатика,
автор: kirill12345678901234
в одномерном массиве найти минимальный элемент и удалить его
Ответы
Автор ответа:
0
//Java
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
ArrayList<Integer> a = new ArrayList();
/**
* Заполнение
*/
for (int i = 0; i < 50; i++)
a.add(i, new java.util.Random().nextInt(100));
/**
* Пузырь
*/
for (int i = 0; i < 50; i++)
for (int j = 0; j < 50-i-1; j++)
if (a.get(j) > a.get(j+1)){
int b = a.get(j);
a.set(j, j+1);
a.set(j+1, b);
}
for (int i = 0; i < 50; i++)
System.out.print(a.get(i) + " ");
System.out.println("n---");
/**
* Удаляем
*/
a.remove(0);
for (int i = 0; i < 50-1; i++)
System.out.print(a.get(i) + " ");
}
}
Проверка:
1 2 3 4 5 6 7 8 9 10 12 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 96 98
---
2 3 4 5 6 7 8 9 10 12 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 96 98
Так как использовался, само расширяющийся массив, то при удалении, ничего сдвигать не нужно
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
ArrayList<Integer> a = new ArrayList();
/**
* Заполнение
*/
for (int i = 0; i < 50; i++)
a.add(i, new java.util.Random().nextInt(100));
/**
* Пузырь
*/
for (int i = 0; i < 50; i++)
for (int j = 0; j < 50-i-1; j++)
if (a.get(j) > a.get(j+1)){
int b = a.get(j);
a.set(j, j+1);
a.set(j+1, b);
}
for (int i = 0; i < 50; i++)
System.out.print(a.get(i) + " ");
System.out.println("n---");
/**
* Удаляем
*/
a.remove(0);
for (int i = 0; i < 50-1; i++)
System.out.print(a.get(i) + " ");
}
}
Проверка:
1 2 3 4 5 6 7 8 9 10 12 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 96 98
---
2 3 4 5 6 7 8 9 10 12 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 96 98
Так как использовался, само расширяющийся массив, то при удалении, ничего сдвигать не нужно
Автор ответа:
0
а можно через сдвиг пожалуйста
Автор ответа:
0
for (int i = 0; i < 49; i++)
a[i] = a[i+1];
но не уверен
так как такой элемент как 50, все равно есть
a[i] = a[i+1];
но не уверен
так как такой элемент как 50, все равно есть
Автор ответа:
0
ну а как полностью будет выглядеть?
Автор ответа:
0
//PascalABC.Net 3.0, сборка 1064
const
nn=50;
var
a:array[1..nn] of integer;
i,n,imin:integer;
begin
Write('Введите количество элементов в массиве: '); Read(n);
Randomize;
Writeln('Исходный массив');
imin:=1;
for i:=1 to n do begin
a[i]:=Random(51)-25;
Write(a[i],' ');
if a[i]<a[imin] then imin:=i;
end;
Writeln;
for i:=imin to n-1 do a[i]:=a[i+1];
Writeln('Массив-результат');
for i:=1 to n-1 do Write(a[i],' '); Writeln
end.
Тестовое решение:
Введите количество элементов в массиве: 15
Исходный массив
17 -3 22 18 -13 -5 5 -15 -18 23 17 -2 -20 23 2
Массив-результат
17 -3 22 18 -13 -5 5 -15 -18 23 17 -2 23 2
А это версия для тех, кто думает, что Паскалю пора давно "на свалку":
//PascalABC.Net 3.0, сборка 1064
begin
var n:=ReadInteger('Введите количество элементов в массиве');
var a:=SeqRandom(n,-25,25).ToArray();
Writeln('Исходный массив:',#13#10,a);
Writeln('Результат:',#13#10,a.Where(x->x<>a.Min));
end.
Тестовое решение:
Введите количество элементов в массиве 15
Исходный массив:
[-10,-15,8,-19,9,21,-22,-11,12,14,2,19,-25,-5,-15]
Результат:
[-10,-15,8,-19,9,21,-22,-11,12,14,2,19,-5,-15]
Можно сравнить понятность кода и его размер как со "школьным" решением, так и с программой на Java, приведенной в предыдущем ответе.
const
nn=50;
var
a:array[1..nn] of integer;
i,n,imin:integer;
begin
Write('Введите количество элементов в массиве: '); Read(n);
Randomize;
Writeln('Исходный массив');
imin:=1;
for i:=1 to n do begin
a[i]:=Random(51)-25;
Write(a[i],' ');
if a[i]<a[imin] then imin:=i;
end;
Writeln;
for i:=imin to n-1 do a[i]:=a[i+1];
Writeln('Массив-результат');
for i:=1 to n-1 do Write(a[i],' '); Writeln
end.
Тестовое решение:
Введите количество элементов в массиве: 15
Исходный массив
17 -3 22 18 -13 -5 5 -15 -18 23 17 -2 -20 23 2
Массив-результат
17 -3 22 18 -13 -5 5 -15 -18 23 17 -2 23 2
А это версия для тех, кто думает, что Паскалю пора давно "на свалку":
//PascalABC.Net 3.0, сборка 1064
begin
var n:=ReadInteger('Введите количество элементов в массиве');
var a:=SeqRandom(n,-25,25).ToArray();
Writeln('Исходный массив:',#13#10,a);
Writeln('Результат:',#13#10,a.Where(x->x<>a.Min));
end.
Тестовое решение:
Введите количество элементов в массиве 15
Исходный массив:
[-10,-15,8,-19,9,21,-22,-11,12,14,2,19,-25,-5,-15]
Результат:
[-10,-15,8,-19,9,21,-22,-11,12,14,2,19,-5,-15]
Можно сравнить понятность кода и его размер как со "школьным" решением, так и с программой на Java, приведенной в предыдущем ответе.
Автор ответа:
0
а размер - не важен
я могу сделать за 5-6 строк это
но сути ведь не поменяет
я могу сделать за 5-6 строк это
но сути ведь не поменяет
Автор ответа:
0
Для школьника у Явы плюсов нет - это Ваши фантазии. Что касается "за 5-6 строк" - это тоже в общем случае фантазии, разве что сторонние библиотеки подключать.
Автор ответа:
0
Плюсы - c++
Автор ответа:
0
Ок, посмотрим, основной код 5-6 строк.. Ну мб 7
Автор ответа:
0
1. С каких про С++ - это для школьника "плюсы"? Разве что только игра слов из за наличия двух плюсов в названии. А с точки зрения освоения языка и программирования на нем - сплошные минусы. 2. Да причем тут "основной код", если программу все равно надо писать полностью? В паскалевском решении тогда вообще две строки основного кода, а можно и одну было сделать.
Похожие вопросы
Предмет: Алгебра,
автор: antonshestakov2015
Предмет: МХК,
автор: kartasevamilena
Предмет: Другие предметы,
автор: Artem1931
Предмет: Алгебра,
автор: anya100998