Напишите программу которая сортирует массив и находит количество различных чисел в нем
Вопрос по информатике:
Напишите программу, которая сортирует массив и находит количество различных чисел в нем.
Используйте алгоритм быстрой сортировки.
Пример:
Массив:
5 3 4 2 1 6 3 2 4
После сортировки:
1 2 2 3 3 4 4 5 6
Различных чисел: 5
Трудности с пониманием предмета? Готовишься к экзаменам, ОГЭ или ЕГЭ?
Воспользуйся формой подбора репетитора и занимайся онлайн. Пробный урок — бесплатно!
- 11.11.2015 22:26
- Информатика
- remove_red_eye 4086
- thumb_up 16
Ответы и объяснения 1
Var i, j, h, a, z, n, k: integer;
array1: array [1..100] of integer;
array2: array [1..100] of integer;
procedure swap(var x, y: integer);
var t: integer;
begin
t := x; x := y; y := t
end;
begin
randomize;
write(‘Введите значение N: ‘);
readln(n);
for i := 1 to n do
begin
array1[i] := random(10) + 1;
end;
for i := 1 to n do
begin
writeln(‘Массив:’);
for i := 1 to n do write(array1[i], ‘ ‘);
writeln;
end;
for h := 1 to n — 1 do
for z := 1 to n — h do
if array1[z] > array1[z + 1] then
swap(array1[z], array1[z + 1]);
for i := 1 to n do
begin
writeln(‘После сортировки:’);
for i := 1 to n do write(array1[i], ‘ ‘);
writeln;
end;
for i:=1 to n do
begin
k := 0;
for j := 1 to n do
if array1[i] array1[j] then k:=k+1;
if k = n — 1 then array2[i] := array1[i];
end;
for i := 1 to n do
if array2[i] > 0 then a := a + 1;
writeln(‘Различных чисел: ‘, a);
end.
- 12.11.2015 03:03
- thumb_up 4
Знаете ответ? Поделитесь им!
Как написать хороший ответ?
Чтобы добавить хороший ответ необходимо:
- Отвечать достоверно на те вопросы, на которые знаете правильный ответ;
- Писать подробно, чтобы ответ был исчерпывающий и не побуждал на дополнительные вопросы к нему;
- Писать без грамматических, орфографических и пунктуационных ошибок.
Этого делать не стоит:
- Копировать ответы со сторонних ресурсов. Хорошо ценятся уникальные и личные объяснения;
- Отвечать не по сути: «Подумай сам(а)», «Легкотня», «Не знаю» и так далее;
- Использовать мат — это неуважительно по отношению к пользователям;
- Писать в ВЕРХНЕМ РЕГИСТРЕ.
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи — смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.
Напишите программу, которая сортирует массив и находит количество различных чисел в нем.Используйте алгоритм быстрой сортировки.
// PascalABC.NET 3.1, сборка 1239 от 08.05.2016
begin
var names:array[1..2,1..5] of string:=
((‘Саша’,’Женя’,’Таня’,’Лена’,’Вася’),
(‘Александр’,’Евгений’,’Татьяна’,’Елена’,’Василий’));
var name:=ReadlnString(‘Введите краткое имя:’);
var p:=0;
for var i:=1 to 5 do
if name=names[1,i] then begin p:=i; break end;
if p>0 then Writeln(names[2,p])
else Writeln(‘Я вас не знаю!’)
end.
<u><em>Тестовое решение</em></u>
Введите краткое имя: Лена
Елена
Python Урок 7. Массивы в Питоне: продолжение (алгоритмы)
import random # подключение библиотеки from random import randint n=10; x=5 mas = [randint(1,10) for i in range(n)] # инициализируем массив i = 0 while i < n and mas[i] != x: # если элемент не равен i += 1 if i < n: print ( "mas[", i, "]=", x, sep = "" ) else: print ( "Не нашли!" )
import random from random import randint n=10;x=5 mas = [randint(1,10) for i in range(n)] for i in range (n): if mas[i] == x: nomer = i break if nomer >= 0: print ( "mas[", nomer, "]=", x, sep = "" ) else: print ( "Не нашли!" )
В данном случае в переменной nomer сохраняется номер элемента массива с найденным значением.
Но на языке Python цикл for обладает уникальным свойством: у него есть блок else, который выполняется в том случае, если в цикле не применился оператор break.
import random from random import randint n=10;x=5 mas = [randint(1,10) for i in range(n)] nomer = -1 for i in range (n): if mas[i] == x: print ( "mas[", i, "]=", x, sep = "" ) break else: print ( "Не нашли!" )
Поиск минимального или максимального элемента
import random from random import randint mas = [randint(1,10) for i in range(n)] MaxEl = mas[0] for i in range(1,n): if mas[i] > MaxEl: MaxEl = mas[i] print (MaxEl)
В переменной MaxEl сохранится максимальный элемент массива.
import random from random import randint mas = [randint(1,10) for i in range(n)] MaxEl = max (mas) print ( MaxEl )
Сортировка массива в Python
Метод Пузырька
Сортировку массива в python будем выполнять методом Пузырька:
import random from random import randint mas = [randint(1,10) for i in range(n)] for i in range(n): print(mas[i],sep="") print(" ") for i in range(n-1): for j in range(n-2, i-1 ,-1): if mas[j+1] < mas[j]: mas[j], mas[j+1] = mas[j+1], mas[j] for i in range(n): print(mas[i],sep="")
Быстрая сортировка массива
Данную сортировку еще называют quick sort или сортировка Хоара (по имени разработчика — Ч.Э. Хоар).
import random from random import randint # процедура def qSort ( A, nStart, nEnd ): if nStart >= nEnd: return L = nStart; R = nEnd X = A[(L+R)//2] while L <= R: while A[L] < X: L += 1 # разделение while A[R] > X: R -= 1 if L <= R: A[L], A[R] = A[R], A[L] L += 1; R -= 1 qSort ( A, nStart, R ) # рекурсивные вызовы qSort ( A, L, nEnd ) N=10 A = [randint(1,10) for i in range(N)] print(A) # вызов процедуры qSort ( A, 0, N-1 ) print(‘отсортированный’, A)