Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Одномерные массивы

Содержание

вМассив – это группа переменных одного типа, расположенных в памяти рядом (в соседних ячейках) и имеющих общее имя. Каждая ячейка в массиве имеет уникальный номер (индекс).В Питоне массивы - списки
Одномерные массивыПреподаватель: Гупалова А.В.				Цветкова И.В.Изучение алгоритмизации и основ программирования на языке Python вМассив – это группа переменных одного типа, расположенных в памяти рядом (в Aмассив215A[0]A[1]A[2]A[3]A[4]ЗНАЧЕНИЕ элемента массиваA[2]НОМЕР (ИНДЕКС)  элемента массива: 2НОМЕР  элемента массива(ИНДЕКС) A = [1, 3, 4, 23, 5]A = [1, 3] + [4, Генераторы списковA =[ i  for i in range(10) ][0, 1, 2, 3, 4, Создание массива:N = 5A = [0]*Ni = 0while i < N: # for i in range(N): print ( Вывод массива на экранКак список:print ( A )[1, 2, 3, 4, 5]В Заполнение случайными числамиfrom random import randintN = 10A = [ randint(20,100) Перебор элементовОбщая схема (можно изменять A[i]):for i in range(N): ... # сделать Подсчёт нужных элементовЗадача. В массиве записаны данные о росте баскетболистов. Сколько из Перебор элементовСумма:summa = 0for x in A: if 180 < x and Перебор элементовСреднее арифметическое:count = 0summa = 0for x in A: if 180 Максимальный элементM = A[0]for i in range(1,N): if A[i] > M: Максимальный элемент и его номер Максимальный элемент и его номерM = max(A)nMax = A.index(M)print ( Вставка и удаление элементов Алгоритм удаления элемента:определить номер удаляемого элемента - k(ввести дан массив А: 3 5 6 8 12 15 17 18 20 {ввод массива и k}  for i in range(k,n-1): Алгоритм вставки элемента: (после k-ого)первые k элементов остаются без измененийвсе элементы, начиная дан массив А: k=33 5 6  8 8 12 15 17 Пример:Вставить 100 после элемента номер которого вводится с клавиатуры: {ввод массива и Алгоритм циклического сдвига на k позиций. I способопределить сколько раз необходимо произвести Сдвиг вправо и влевоn=int(input())a=[5]*nfor i in range(n):  a[i]=int(input())print(a)k=int(input())k=k%nfor i in range(k): II способ Скопировать первые k элементов массива во временный массивСдвинуть оставшиеся n-k III способотобразить элементы массива(0, k-1)отобразить элементы массива (k, n-1)отобразить элементы массива (0, n-1) j-сколько раз произвести обмен, left - левая граница отображения, right - правая Сжатие массива.Удаление каждого k-го элемента:i – индекс активного элементаl - индекс просматриваемого Линейный поиск.Алгоритм.	Последовательно просматриваем массив 	и сравниваем значение очередного элемента с данным, если Улучшим: будем прерывать поиск, как только найдем элемент:while i Бинарный поиск Применяется для отсортированных массивов!!!!!!!.Задача. Дано Х и массив А(n), Алгоритм Является ли Х средним элементом массива. Если да, то поиск завершен, l = 0; r = n-1; {на первом шаге рассматриваем весь Сортировка - процесс упорядочения заданного множества объектов по заданному признаку.Данные можно отсортировать:по Степень эффективности метода - количество сравнений и обменов, произведенных в процессе сортировки.	Наиболее Сортировка методом выбора Алгоритм (на примере сортировки по убыванию) Выбрать минимальный (максимальный) 23 12 43 21 5 17 For   i in range(n-1,0,-1):     найти for I in range (n-1,0,-1) Алгоритм: (на примере сортировки по убыванию)1) Просматриваем массив парами a[0], a[1]; a[2], 12  34 6   11   4534 12 For k in range(n-1):For   i in range ( n-k+1): Улучшенный пузырекP=True; {есть перестановка?}K=1; {Номер просмотра}While P   P=false;  For
Слайды презентации

Слайд 2 в
Массив – это группа переменных одного типа, расположенных

вМассив – это группа переменных одного типа, расположенных в памяти рядом

в памяти рядом (в соседних ячейках) и имеющих общее

имя. Каждая ячейка в массиве имеет уникальный номер (индекс).

В Питоне массивы - списки


Слайд 3
A
массив
2
15
A[0]
A[1]
A[2]
A[3]
A[4]
ЗНАЧЕНИЕ элемента массива
A[2]
НОМЕР (ИНДЕКС) элемента массива: 2

НОМЕР элемента

Aмассив215A[0]A[1]A[2]A[3]A[4]ЗНАЧЕНИЕ элемента массиваA[2]НОМЕР (ИНДЕКС) элемента массива: 2НОМЕР элемента массива(ИНДЕКС)

массива
(ИНДЕКС)


Слайд 4 A = [1, 3, 4, 23, 5]
A =

A = [1, 3, 4, 23, 5]A = [1, 3] +

[1, 3] + [4, 23] + [5]
[1, 3, 4,

23, 5]

A = [0]*10

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

A = list ( range(10) )

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


Слайд 5 Генераторы списков
A =[ i  for i in range(10) ]
[0,

Генераторы списковA =[ i  for i in range(10) ][0, 1, 2, 3,

1, 2, 3, 4, 5, 6, 7, 8, 9]
A

=[ i*i  for i in range(10) ]

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

for i in range(10)

i*i

from random import randint
A = [ randint(20,100)
for x in range(10)]

randint(20,100)

A = [ i for i in range(100)  
if isPrime(i)  ]

if isPrime(i)

случайные числа

условие отбора


Слайд 6 Создание массива:



N = 5
A = [0]*N
i = 0
while

Создание массива:N = 5A = [0]*Ni = 0while i < N:

i < N:
# обработать A[i]
i += 1
Цикл

с переменной:

for i in range(N):
# обработать A[i]

Обработка в цикле:


Слайд 7 for i in range(N):
print ( "A[", i,

for i in range(N): print (

"]=",
sep = "",

end = "" )
A[i] = int( input() )

Ввод с клавиатуры:

A = [  int(input())  for i in range(N) ]

Ввод без подсказок:

data = input() # "1 2 3 4 5"
s = data.split() # ["1","2","3","4","5"]
A = [ int(x) for x in s ]
# [1,2,3,4,5]


Слайд 8 Вывод массива на экран
Как список:
print ( A )
[1,

Вывод массива на экранКак список:print ( A )[1, 2, 3, 4,

2, 3, 4, 5]
В строчку через пробел:
for i in

range(N):
print ( A[i], end = " " )

1 2 3 4 5

или так:

for x in A:
print ( x, end = " " )

1 2 3 4 5

или так:

s = [ str(x) for x in A]
print ( " ".join( s ) )

соединить через пробел

записать как строку

или так:

print ( *A )

print (1, 2, 3, 4, 5)



Слайд 9 Заполнение случайными числами
from random import randint
N = 10
A

Заполнение случайными числамиfrom random import randintN = 10A = [ randint(20,100)

= [ randint(20,100)
for

x in range(N)]

randint(20,100)

случайные числа
[20,100]

from random import randint
N = 10
A = [0]*N
for i in range(N):
A[i] = randint(20,100)

или так:


Слайд 10 Перебор элементов
Общая схема (можно изменять A[i]):
for i in

Перебор элементовОбщая схема (можно изменять A[i]):for i in range(N): ... #

range(N):
... # сделать что-то с A[i]
Если не нужно

изменять A[i]:

for x in A:
... # сделать что-то с x

for i in range(N):
A[i] += 1

x = A[0], A[1], ..., A[N-1]

for x in A:
print ( x )


Слайд 11 Подсчёт нужных элементов
Задача. В массиве записаны данные о

Подсчёт нужных элементовЗадача. В массиве записаны данные о росте баскетболистов. Сколько

росте баскетболистов. Сколько из них имеет рост больше 180

см, но меньше 190 см?

count = 0
for x in A:
if 180 < x and x < 190:
count += 1


Слайд 12 Перебор элементов
Сумма:
summa = 0
for x in A:
if

Перебор элементовСумма:summa = 0for x in A: if 180 < x

180 < x and x < 190:
summa

+= x
print ( summa )

print ( sum(A) )

или так:


Слайд 13 Перебор элементов
Среднее арифметическое:
count = 0
summa = 0
for x

Перебор элементовСреднее арифметическое:count = 0summa = 0for x in A: if

in A:
if 180 < x and x

190:
count += 1
summa += x
print ( summa/count )

среднее арифметическое

или так:

B = [ x for x in A ]
if 180 < x and x < 190]
print ( sum(B)/len(B) )


отбираем нужные


Слайд 14 Максимальный элемент
M = A[0]
for i in range(1,N):
if

Максимальный элементM = A[0]for i in range(1,N): if A[i] > M:

A[i] > M:
M = A[i]
print (

M )

M = A[0]
for x in A:
if x > M:
M = x

Варианты в стиле Python:

M = max ( A )


Слайд 15 Максимальный элемент и его номер

Максимальный элемент и его номер

Слайд 16 Максимальный элемент и его номер
M = max(A)
nMax =

Максимальный элемент и его номерM = max(A)nMax = A.index(M)print (

A.index(M)
print ( "A[", nMax, "]=", M, sep = ""

)

Вариант в стиле Python:


Слайд 17 Вставка и удаление элементов
Алгоритм удаления элемента:
определить номер

Вставка и удаление элементов Алгоритм удаления элемента:определить номер удаляемого элемента -

удаляемого элемента - k(ввести с клавиатуры или найти из

каких-то условий)
сдвинуть все элементы начиная с k+1-ого на 1 элемент влево
последнему элементу массива присвоить значение 0
При удалении элемента размер массива не меняется! Поэтому необходимо далее в программе указывать не до n-1, а до n-2.

Слайд 18
дан массив А:
3 5 6 8 12

дан массив А: 3 5 6 8 12 15 17 18

15 17 18 20 25


k=3
3 5 6 12

15 17 18 20 25 25
3 5 6 12 15 17 18 20 25 0

Элемент который нужно удалить


Слайд 19 {ввод массива и k}
for i

{ввод массива и k} for i in range(k,n-1):   a[i]=a[i+1]a[n-1] = 0 {вывод массива}

in range(k,n-1):
a[i]=a[i+1]
a[n-1] = 0

{вывод массива}

Слайд 20 Алгоритм вставки элемента: (после k-ого)
первые k элементов остаются

Алгоритм вставки элемента: (после k-ого)первые k элементов остаются без измененийвсе элементы,

без изменений
все элементы, начиная с k-ого сдвигаются на 1

позицию назад
на место (k+1)-ого элемента записываем новый элемент.
Массив из n элементов, в который вставляется k элементов необходимо определять как массив, имеющий размер n+k. Вставка перед элементом отличается только тем, что сдвигаются все элементы, начиная с k-ого и на место k -ого записываем новый

Слайд 21 дан массив А:






k=3
3 5 6 8

дан массив А: k=33 5 6 8 8 12 15 17

8 12 15 17 18 20 25
3 5 6

8 100 12 15 17 18 20 25


позиция для добавления
нового элемента


Слайд 22 Пример:
Вставить 100 после элемента номер которого вводится с

Пример:Вставить 100 после элемента номер которого вводится с клавиатуры: {ввод массива

клавиатуры:
{ввод массива и k}
for i

in range(n,k+2,-1):
a[i+1]=a[i]
a[k+1] = 100;
{вывод массива}

Слайд 23 Алгоритм циклического сдвига на k позиций.
I способ
определить сколько

Алгоритм циклического сдвига на k позиций. I способопределить сколько раз необходимо

раз необходимо произвести одноэлементный сдвиг
k := k % n;
k

раз применить одноэлементный сдвиг
Алгоритм одноэлементного сдвига.

Запомнить в дополнительной ячейке первый (или последний) элемент массива
Сдвинуть все элементы влево (вправо)
На последнее (первое) место записать тот, который запоминали.


Слайд 24 Сдвиг вправо и влево
n=int(input())
a=[5]*n
for i in range(n):

Сдвиг вправо и влевоn=int(input())a=[5]*nfor i in range(n): a[i]=int(input())print(a)k=int(input())k=k%nfor i in range(k):

a[i]=int(input())
print(a)
k=int(input())
k=k%n
for i in range(k):
t=a[0]
for j in range(n-1):

a[j]=a[j+1]
a[n-1]=t
print(a)


Слайд 25 II способ
Скопировать первые k элементов массива во

II способ Скопировать первые k элементов массива во временный массивСдвинуть оставшиеся

временный массив
Сдвинуть оставшиеся n-k элементов влево на k позиций
Скопировать

данные из временного массива обратно в основной массив на последние k позиций

Слайд 26 III способ
отобразить элементы массива(0, k-1)
отобразить элементы массива (k,

III способотобразить элементы массива(0, k-1)отобразить элементы массива (k, n-1)отобразить элементы массива (0, n-1)

n-1)
отобразить элементы массива (0, n-1)


Слайд 27 j-сколько раз произвести обмен, left - левая граница

j-сколько раз произвести обмен, left - левая граница отображения, right -

отображения, right - правая граница отображения,
Dlina - длина

отображаемой части массива
j=1 left=0 right=k-1 dlina=right-left+1
(***) while j<=dlina // 2 :
temp=a[left]
a[left]=a[right]
a[right]=temp
left+=1
right-=1
j+=1
j=1 left=k right=n-1 dlina=right-left+1
(***) {повторить цикл}
j=1 left=0 right=n-1 dlina=right-left+1
(***) {повторить цикл}

Слайд 28 Сжатие массива.

Удаление каждого k-го элемента:
i – индекс активного

Сжатие массива.Удаление каждого k-го элемента:i – индекс активного элементаl - индекс

элемента
l - индекс просматриваемого элемента
kol – количество элементов после

всех удалений.
i=k-1; l=k-1;
while l<=n-1:
if (l+1) % k==0 :
l+=1
if l<=n-1 :
a[i]=a[l];
i+=1
l+=1
kol=n-n // k

Слайд 29 Линейный поиск.
Алгоритм.
Последовательно просматриваем массив
и сравниваем значение очередного

Линейный поиск.Алгоритм.	Последовательно просматриваем массив 	и сравниваем значение очередного элемента с данным,

элемента с данным, если значение очередного элемента совпадет с

Х, то запоминаем его номер в переменной k.
For i in range(n):
if a[i] == x :
k = i;
Недостатки данной реализации алгоритма:
находим только последнее вхождение элемента
в любом случае производится n сравнений

Слайд 30
Улучшим: будем прерывать поиск, как только найдем элемент:
while

Улучшим: будем прерывать поиск, как только найдем элемент:while i

i

i+=1
В результате или найдем нужный элемент, или просмотрим весь массив.
Недостаток данной реализации:
в заголовке цикла сложное условие, что замедляет поиск.

Слайд 31 Бинарный поиск
Применяется для отсортированных массивов!!!!!!!.

Задача. Дано

Бинарный поиск Применяется для отсортированных массивов!!!!!!!.Задача. Дано Х и массив

Х и массив А(n), отсортированный по неубыванию Найти i,

такой что a[i] = x или сообщить что данного элемента в массиве нет.

Слайд 32 Алгоритм
Является ли Х средним элементом массива. Если

Алгоритм Является ли Х средним элементом массива. Если да, то поиск

да, то поиск завершен, иначе переходим к пункту 2.
Возможно

2 случая:
Х меньше среднего, тогда так как А упорядочен, то из рассмотрения можно исключить все элементы массива, расположенные правее среднего и применить метод к левой половине массива.
Х больше среднего. Значит, исключаем из рассмотрения левую половину массива и применяем метод к правой части.

Слайд 33
l = 0; r = n-1; {на

l = 0; r = n-1; {на первом шаге рассматриваем

первом шаге рассматриваем весь массив}
f = False; {признак

того, что Х не найден}
while l <= r and not f :
m = (l+r) // 2;
if a[m] ==x :
f = True {элемент найден! Поиск прекращаем}
elif x < a[m] :
r=m-1 {отбрасываем правую часть}
else: l = m + 1 {отбрасываем левую часть}


Слайд 34 Сортировка - процесс упорядочения заданного множества объектов по

Сортировка - процесс упорядочения заданного множества объектов по заданному признаку.Данные можно

заданному признаку.


Данные можно отсортировать:
по возрастанию - каждый следующий элемент

больше предыдущего a[1]по не убыванию - каждый следующий элемент не меньше предыдущего a[1]<=a[2]<=...<=a[n]
по убыванию - каждый следующий элемент меньше предыдущего a[1]>a[2]>...>a[n]
по не возрастанию - каждый следующий элемент не больше предыдущего a[1]>=a[2]>=...>=a[n]

Слайд 35
Степень эффективности метода - количество сравнений и обменов,

Степень эффективности метода - количество сравнений и обменов, произведенных в процессе

произведенных в процессе сортировки.
Наиболее часто встречаются 3 метода: сортировка

выбором, обменом и вставкой.


Слайд 36 Сортировка методом выбора
Алгоритм (на примере сортировки по

Сортировка методом выбора Алгоритм (на примере сортировки по убыванию) Выбрать минимальный

убыванию)
Выбрать минимальный (максимальный) элемент массива
Поменять его местами с

последним (первым) элементом: теперь самый маленький (большой) на своем месте
Уменьшить количество рассматриваемых элементов на 1
Повторить действия 1-3 с оставшимися элементами (теми, которые еще не стоят на своих местах)

Слайд 37
23 12 43

23 12 43 21 5 17

21 5 17

23 12

43 21 17 5

23 17 43 21 12 5

23 21 43 17 12 5

23 43 21 17 12 5

43 23 21 17 12 5








Слайд 38 For i in range(n-1,0,-1):

For  i in range(n-1,0,-1):   найти минимальный элемент

найти минимальный элемент из a[0],...,a[i]

запомнить его индекс в переменной k
если i <> k то поменять местами a[i] и a[k]
end;

Слайд 39 for I in range (n-1,0,-1)

for I in range (n-1,0,-1)    k=0

k=0

for j in range(1, i+1):
if a[j] k=j
if i!=k :
temp=a[i]
a[i]=a[k]
a[k]=temp

Слайд 40
Алгоритм: (на примере сортировки по убыванию)
1) Просматриваем массив

Алгоритм: (на примере сортировки по убыванию)1) Просматриваем массив парами a[0], a[1];

парами a[0], a[1]; a[2], a[3]; ...
2) Если первый элемент

пары меньше второго (пара расположена неправильно), то необходимо поменять их местами
3) Уменьшить количество рассматриваемых элементов на 1
4) Повторять действия 1-3 пока количество элементов в текущей части массива не уменьшится до двух.

Слайд 41
12 34 6 11

12 34 6  11  4534 12 6 11

45
34 12 6 11 45
34 12 6

11 45
34 12 11 6 45
34 12 11 45 6

Слайд 42
For k in range(n-1):
For i in

For k in range(n-1):For  i in range ( n-k+1): if

range ( n-k+1):
if a[i] > a[i+1] :

t = a[i]
a[i]= a[i+1]
a[i+1]= t


  • Имя файла: odnomernye-massivy.pptx
  • Количество просмотров: 115
  • Количество скачиваний: 1