Меню
Разработки
Разработки  /  Информатика  /  Презентации  /  10 класс  /  Обработка одномерных массивов (сортировка)

Обработка одномерных массивов (сортировка)

24.03.2020

Содержимое разработки

Тема :  «Сортировка элементов одномерного массива»   МБОУ «СОШ №2» городского округа Судак Жолтикова Е.М .

Тема : «Сортировка элементов одномерного массива»

МБОУ «СОШ №2» городского округа Судак

Жолтикова Е.М .

Понятие массива.  Ряд однотипных данных, имеющих имя, порядковый номер и численное значение называются массивами. Порядковый номер  1 2 3 4 5 6 7 8 9 - 5 14 7 10 32 9 -45 34 16 А Имя Значение

Понятие массива.

Ряд однотипных данных, имеющих имя, порядковый номер и численное значение называются массивами.

Порядковый номер

1 2 3 4 5 6 7 8 9

- 5 14 7 10 32 9 -45 34 16

А

Имя

Значение

Пример: Сформировать одномерный массив из 9 элементов и распечатать его.

Пример: Сформировать одномерный массив из 9 элементов и распечатать его.

= X[2] = … = X [n] " width="640"

Сортировка элементов в массиве

Сортировка представляет собой процесс упорядочения элементов в массиве по возрастанию или убыванию их значений.

Например: Массив Х из n элементов будет отсортирован в порядке возрастания значений его элементов, если

X[1]

И в порядке убывания, если

X[1] = X[2] = … = X [n]

 Способы сортировки массива:   Сортировка «пузырька»   Сортировка «перестановкой» Сортировка «вставкой» Сортировка «выбором»  Быстрая сортировка

Способы сортировки массива:

Сортировка «пузырька»

Сортировка «перестановкой»

Сортировка «вставкой»

Сортировка «выбором»

Быстрая сортировка

Сортировка массива методом «пузырька»  Сортировка методом пузырька использует метод обменной сортировки и основана на выполнении в цикле операций сравнения и при необходимости обмена соседних элементов.

Сортировка массива методом «пузырька»

Сортировка методом пузырька использует метод обменной сортировки и основана на выполнении в цикле операций сравнения и при необходимости обмена соседних элементов.

Принцип сортировки массива по возрастанию методом «пузырька» Сравним первый элемент массива со вторым. Если первый окажется больше второго, то поменяем их местами. Те же действия выполним для второго и третьего, третьего и четвёртого, I-го и (I + 1)-го, (n – 1)-го и n-го элементов. В результате этих действий самый большой элемент станет на последнее (n-е) место. Теперь повторим данный алгоритм сначала, но последний (n-й) элемент, рассматривать не будем, так как он уже занял своё место. После проведения данной операции самый большой элемент оставшегося массива встанет на (n - 1) место. Так повторяем до тех пор, пока не упорядочим весь массив.

Принцип сортировки массива по возрастанию методом «пузырька»

  • Сравним первый элемент массива со вторым. Если первый окажется больше второго, то поменяем их местами. Те же действия выполним для второго и третьего, третьего и четвёртого, I-го и (I + 1)-го, (n – 1)-го и n-го элементов. В результате этих действий самый большой элемент станет на последнее (n-е) место. Теперь повторим данный алгоритм сначала, но последний (n-й) элемент, рассматривать не будем, так как он уже занял своё место. После проведения данной операции самый большой элемент оставшегося массива встанет на (n - 1) место. Так повторяем до тех пор, пока не упорядочим весь массив.
 Сортировка массива А состоящего из 5 элементов, по возрастанию методом «пузырька»  Таблица сортировки массива по возрастанию  Номер элемента 1 Исходный массив 2 7 Первый просмотр 3 3 3 Второй просмотр Третий просмотр 5 3 4 5 5 4 3 4 4 Четвертый просмотр 2 2 2 2 2 4 7 5 3 7 5 4 7 5 7

Сортировка массива А состоящего из 5 элементов, по возрастанию методом «пузырька»

Таблица сортировки массива по возрастанию

Номер элемента

1

Исходный массив

2

7

Первый просмотр

3

3

3

Второй просмотр

Третий просмотр

5

3

4

5

5

4

3

4

4

Четвертый просмотр

2

2

2

2

2

4

7

5

3

7

5

4

7

5

7

a[i+1] Pr:=a[i+1]; A[i+1]=a[i]; A[i]:=pr; j:=j+1 да нет j i:=i+1 нет да да j=n-1 j=j+1 iнет " width="640"

Блок-схема сортировки массива методом «пузырька»

j:=1

i:=1

нет

да

a[i]a[i+1]

Pr:=a[i+1]; A[i+1]=a[i];

A[i]:=pr;

j:=j+1

да

нет

j

i:=i+1

нет

да

да

j=n-1

j=j+1

i

нет

Сформировать массив из n элементов и упорядочить элементы в массиве по возрастанию их значений (метод «пузырька»)

Сформировать массив из n элементов и упорядочить элементы в массиве по возрастанию их значений (метод «пузырька»)

Сортировка массива методом «перестановки»

Сортировка массива методом «перестановки»

Таблица сортировки массива по убыванию методом «перестановки» № элементов Значения элементов массива 1 перестановки 7 2 9 Первая 3 14 Вторая 4 9 1 14 9 Третья 14 5 1 14 Четвертая 1 7 5 14 9 7 9 5 7 7 1 5 5 5 1 Если  n элементов, то количество перестановок n 2

Таблица сортировки массива по убыванию методом «перестановки»

элементов

Значения элементов массива

1

перестановки

7

2

9

Первая

3

14

Вторая

4

9

1

14

9

Третья

14

5

1

14

Четвертая

1

7

5

14

9

7

9

5

7

7

1

5

5

5

1

Если n элементов, то количество перестановок n 2

Таблица сортировка массива по возрастанию методом «перестановки» № элементов Значения элементов массива 1 перестановки 7 2 Первая 9 3 1 Вторая 4 1 1 9 Третья 14 5 5 7 1 Четвертая 1 7 5 14 5 5 14 5 7 9 14 7 9 9 14 Если  n элементов, то количество перестановок n 2

Таблица сортировка массива по возрастанию методом «перестановки»

элементов

Значения элементов массива

1

перестановки

7

2

Первая

9

3

1

Вторая

4

1

1

9

Третья

14

5

5

7

1

Четвертая

1

7

5

14

5

5

14

5

7

9

14

7

9

9

14

Если n элементов, то количество перестановок n 2

a[j] Pr:=a[j] A[j:]=a[i] A[i]:=pr j:=j+1 нет да j i:=i+1 да i" width="640"

Блок-схема сортировки массива методом «перестановки»

i:=1

J:=i+1

нет

да

a[i]a[j]

Pr:=a[j]

A[j:]=a[i]

A[i]:=pr

j:=j+1

нет

да

j

i:=i+1

да

i

Сформировать массив А размерностью 10. Задать значения элементов массива с помощью ГСЧ . Расположить элементы массива по возрастанию (метод перестановки).

Сформировать массив А размерностью 10. Задать значения элементов массива с помощью ГСЧ . Расположить элементы массива по возрастанию (метод перестановки).

Сформировать массив А размерностью 10. Задать значения элементов массива с помощью ГСЧ . Расположить элементы массива по убыванию (метод перестановки).

Сформировать массив А размерностью 10. Задать значения элементов массива с помощью ГСЧ . Расположить элементы массива по убыванию (метод перестановки).

Сортировка массива методом «вставки» Сначала упорядочиваются два элемента массива. Затем делается вставка третьего элемента в соответствующее место по отношению к первым двум. Четвёртый элемент помещают в список из уже упорядоченных трёх элементов. Этот процесс повторяется до тех пор, пока все элементы не будут упорядочены.

Сортировка массива методом «вставки»

Сначала упорядочиваются два элемента массива.

Затем делается вставка третьего элемента в соответствующее место по отношению к первым двум.

Четвёртый элемент помещают в список из уже упорядоченных трёх элементов.

Этот процесс повторяется до тех пор, пока все элементы не будут упорядочены.

ПРИМЕР :  Дан массив из восьми элементов. Первые шесть уже упорядочены, а седьмой нужно вставить между вторым и четвёртым. Сохраним его во вспомогательной переменной Х.  Пятый элемент переместим на место шестого, четвёртый – на место пятого, а третий на место четвёртого. То есть выполнили сдвиг элементов массива на одну позицию вправо.  Запишем содержимое вспомогательной переменной в третью позицию.   Y 8 Y 7 Y 3 Y 4 Y 5 Y 2 Y 1 Y 6 X

ПРИМЕР : Дан массив из восьми элементов. Первые шесть уже упорядочены, а седьмой нужно вставить между вторым и четвёртым. Сохраним его во вспомогательной переменной Х. Пятый элемент переместим на место шестого, четвёртый – на место пятого, а третий на место четвёртого. То есть выполнили сдвиг элементов массива на одну позицию вправо. Запишем содержимое вспомогательной переменной в третью позицию.

  • Y 8
  • Y 7
  • Y 3
  • Y 4
  • Y 5
  • Y 2
  • Y 1
  • Y 6
  • X
0 and x j 1 " width="640"

Блок-схема сортировки массива методом «вставки»

Начало

1

Ввод n

i=1,n

Yj+1=Yj

Yi

J=j -1

i=2,n

Yj+1=X

X=Yi

i=1,n

j=i -1

Yj

Конец

J0 and x j

1

Фрагмент программы, реализующей сортировку массива методом вставки.  For i:=1 to n do  Begin  x:=y[i];{Сохраним текущий элемент массива.} {В переменной j будем хранить номера элементов, предшествующих текущему.} J:=i-1; {Сдвиг массива на одну позицию в право до тех пор, пока} While (x0) do Begin  y[j+1] :=y[j]:  j:=j-1; End; {Запись текущего элемента на соответствующую позицию,} {то есть перед элементами, превышающими его.} y[j+1]:=x; end;

Фрагмент программы, реализующей сортировку массива методом вставки.

For i:=1 to n do

Begin

x:=y[i];{Сохраним текущий элемент массива.}

{В переменной j будем хранить номера элементов, предшествующих текущему.}

J:=i-1;

{Сдвиг массива на одну позицию в право до тех пор, пока}

While (x0) do

Begin

y[j+1] :=y[j]:

j:=j-1;

End;

{Запись текущего элемента на соответствующую позицию,}

{то есть перед элементами, превышающими его.}

y[j+1]:=x;

end;

Сортировка массива по возрастанию методом «выбора» Найдем в массиве самый большой элемент и поменяем его местами с последним элементом. Повторим алгоритм поиска максимального элемента, уменьшив количество просматриваемых элементов на единицу и поменяем его местами с предпоследним элементом. Описанную выше операцию поиска проводим до полного упорядочивания элементов в массиве..  Для упорядочивания массива по убыванию необходимо перемещать минимальный элемент.

Сортировка массива по возрастанию методом «выбора»

  • Найдем в массиве самый большой элемент и поменяем его местами с последним элементом.
  • Повторим алгоритм поиска максимального элемента, уменьшив количество просматриваемых элементов на единицу и поменяем его местами с предпоследним элементом.
  • Описанную выше операцию поиска проводим до полного упорядочивания элементов в массиве..

Для упорядочивания массива по убыванию необходимо перемещать минимальный элемент.

max max=y[i] nom=i " width="640"

Блок – схема сортировки массива методом «выбора»

K=n

j=1,n

n=n-1

max=y[1]

nom=1

b=y[nom]

y[nom]=y[n]

y[n]=b

i=2,n

y[i]max

max=y[i]

nom=i

Быстрая сортировка. Принцип работы Один из самых быстрых алгоритмов, позволяющих достигать производительности ~ O(n*log n). 1. В исходной последовательности выбирается некоторый опорный элемент a[i]. 2. Пробегаемся по всей последовательности и элементы, меньшие, либо равные a[i] располагаем слева от него, большие - справа. Эту же самую процедуру рекурсивно запускаем для 2-х полученных половинок. =a[i]  Т.е. в 2-х полученных последовательностях слева и справа от выбранного на первом шаге элемента - также выбираем некоторый опорный ключ и перебрасываем соответствующие большие и меньшие чем он элементы. 4. В уже 4-х полученных последовательностях - тоже самое. Пока не получим последовательности, состоящие лишь из одного элемента. После выполнения всех рекурсий в результате получаем отсортированную исходную последовательность.

Быстрая сортировка.

Принцип работы

Один из самых быстрых алгоритмов, позволяющих достигать производительности ~ O(n*log n).

1. В исходной последовательности выбирается некоторый опорный элемент a[i].

2. Пробегаемся по всей последовательности и элементы, меньшие, либо равные a[i] располагаем слева от него, большие - справа.

  • Эту же самую процедуру рекурсивно запускаем для 2-х полученных половинок. =a[i]

Т.е. в 2-х полученных последовательностях слева и справа от выбранного на первом шаге элемента - также выбираем некоторый опорный ключ и перебрасываем соответствующие большие и меньшие чем он элементы.

4. В уже 4-х полученных последовательностях - тоже самое. Пока не получим последовательности, состоящие лишь из одного элемента. После выполнения всех рекурсий в результате получаем отсортированную исходную последовательность.

Выбор опорного элемента  При быстрой сортировке  выбор  опорного элемента на каждом шаге играет очень значительную роль, т.к. от этого зависит суммарная скорость выполнения всего алгоритма при различных условиях сортировки.    Варианты выбора опорного элемента. Частичная упорядоченность элементов. Наиболее хаотичное расположение элементов. Самые распространенные варианты:  • выбор середины отрезка • выбор случайного элемента последовательности • выбор первого элемента последовательности .

Выбор опорного элемента

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

Варианты выбора опорного элемента.

  • Частичная упорядоченность элементов.
  • Наиболее хаотичное расположение элементов.
  • Самые распространенные варианты:

• выбор середины отрезка

• выбор случайного элемента последовательности

• выбор первого элемента последовательности .

Алгоритм выбора опорного элемента последовательности Этот алгоритм был впервые описан К. А. Р. Хоаром в его классической статье «Быстрая сортировка»

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

Этот алгоритм был впервые описан К. А. Р. Хоаром в его классической статье «Быстрая сортировка»

Чтобы отсортировать массив, мы разделяем его на два под массива и сортируем каждый из них рекурсивно.  Например, для сортировки массива из семи элементов: положение первого обмена Разделение массива 4 9 7 6 2 3 8 i j Исходное положение 4 9 7 6 2 3 8 j i  4 3 7 6 2 9 8 i Положение второго обмена j 4 3 2 6 7 9 8 i j Положение третьего обмена

Чтобы отсортировать массив, мы разделяем его на два под массива и сортируем каждый из них рекурсивно. Например, для сортировки массива из семи элементов:

положение первого обмена

Разделение массива

4

9

7

6

2

3

8

i

j

Исходное положение

4

9

7

6

2

3

8

j

i

4

3

7

6

2

9

8

i

Положение второго обмена

j

4

3

2

6

7

9

8

i

j

Положение третьего обмена

=v) or (i=j-1); b:=a[i]; a[i]:=a[j]; a[j]:=b; until i=j; a[j]:=a[i]; a[i]:= a[r]; a[r]:=b; part:=i; end; QuickSort(1,n); writeln; for k:=1 to n do write(a[k]:3); readln; end. " width="640"

Пример: Сформировать массив из 10 элементов. Значения задать ГСЧ. Отсортировать массив методом «быстрой сортировки».

procedure QuickSort(l, t: integer);

var i: integer;

begin

if l

begin

i:=part(l, t);

QuickSort(l,i-1);

QuickSort(i+1,t);

end;

end;

begin

clrscr;

randomize;

for k:=1 to 10 do

begin

a[k]:=random(100);

write(a[k]:3);

end;

program Quitsort;

uses

crt;

Const

N=10;

Type

Mas=array[1..n] of integer;

var

a: mas;

k: integer;

function Part(l, r: integer):integer;

var

v, i, j, b: integer;

begin

V:=a[r];

I:=l-1;

j:=r;

repeat

repeat

dec(j)

until (a[j]

repeat

inc(i)

until (a[i]=v) or (i=j-1);

b:=a[i];

a[i]:=a[j];

a[j]:=b;

until i=j;

a[j]:=a[i];

a[i]:= a[r];

a[r]:=b;

part:=i;

end;

QuickSort(1,n);

writeln;

for k:=1 to n do

write(a[k]:3);

readln;

end.

=v) or (i=j-1); b:=a[i]; a[i]:=a[j]; a[j]:=b; until i=j; a[j]:=a[i]; a[i]:= a[r]; a[r]:=b; part:=i; end; procedure QuickSort(l, t: integer); var i: integer; begin if l begin i:=part(l, t); QuickSort(l,i-1); QuickSort(i+1,t); end; end; begin clrscr; randomize; for k:=1 to 10 do begin a[k]:=random(100); write(a[k]:3); end; QuickSort(1,n); writeln; for k:=1 to n do write(a[k]:3); readln; end.   " width="640"

Пример: Сформировать массив из 10 элементов. Значения задать ГСЧ. Отсортировать массив методом «быстрой сортировки».

program Quitsort;

uses

crt;

Const

N=10;

Type

Mas=array[1..n] of integer;

var

a: mas;

k: integer;

 

function Part(l, r: integer):integer;

var

v, i, j, b: integer;

begin

V:=a[r];

I:=l-1;

j:=r;

repeat

repeat

dec(j)

until (a[j]

repeat

inc(i)

until (a[i]=v) or (i=j-1);

b:=a[i];

a[i]:=a[j];

a[j]:=b;

until i=j;

a[j]:=a[i];

a[i]:= a[r];

a[r]:=b;

part:=i;

end;

procedure QuickSort(l, t: integer);

var i: integer;

begin

if l

begin

i:=part(l, t);

QuickSort(l,i-1);

QuickSort(i+1,t);

end;

end;

begin

clrscr;

randomize;

for k:=1 to 10 do

begin a[k]:=random(100);

write(a[k]:3);

end;

QuickSort(1,n);

writeln;

for k:=1 to n do

write(a[k]:3);

readln;

end.

 

Результат работы программы 60,79, 82, 58, 39, 9, 54, 92, 44, 32 60,79, 82, 58, 39, 9, 54, 92, 44, 32 9,79, 82, 58, 39, 60, 54, 92, 44, 32 9,79, 82, 58, 39, 60, 54, 92, 44, 32 9, 32, 82, 58, 39, 60, 54, 92, 44, 79 9, 32, 44, 58, 39, 60, 54, 92, 82, 79 9, 32, 44, 58, 39, 54, 60, 92, 82, 79 9, 32, 44, 58, 39, 92, 60, 54, 82, 79 9, 32, 44, 58, 39, 54, 60, 79, 82, 92 9, 32, 44, 58, 54, 39, 60, 79, 82, 92 9, 32, 44, 58, 60, 39, 54, 79, 82, 92 9, 32, 44, 58, 54, 39, 60, 79, 82, 92 9, 32, 44, 58, 54, 39, 60, 79, 82, 92 9, 32, 44, 58, 54, 39, 60, 79, 82, 92 9, 32, 39, 58, 54, 44, 60, 79, 82, 92 9, 32, 39, 58, 54, 44, 60, 79, 82, 92 9, 32, 39, 44, 54, 58, 60, 79, 82, 92 9, 32, 39, 44, 58, 54, 60, 79, 82, 92 9, 32, 39, 44, 54, 58, 60, 79, 82, 92 9, 32, 39, 44, 54, 58, 60, 79, 92, 82 9, 32, 39, 44, 54, 58, 60, 79, 82, 92

Результат работы программы

60,79, 82, 58, 39, 9, 54, 92, 44, 32

60,79, 82, 58, 39, 9, 54, 92, 44, 32

9,79, 82, 58, 39, 60, 54, 92, 44, 32

9,79, 82, 58, 39, 60, 54, 92, 44, 32

9, 32, 82, 58, 39, 60, 54, 92, 44, 79

9, 32, 44, 58, 39, 60, 54, 92, 82, 79

9, 32, 44, 58, 39, 54, 60, 92, 82, 79

9, 32, 44, 58, 39, 92, 60, 54, 82, 79

9, 32, 44, 58, 39, 54, 60, 79, 82, 92

9, 32, 44, 58, 54, 39, 60, 79, 82, 92

9, 32, 44, 58, 60, 39, 54, 79, 82, 92

9, 32, 44, 58, 54, 39, 60, 79, 82, 92

9, 32, 44, 58, 54, 39, 60, 79, 82, 92

9, 32, 44, 58, 54, 39, 60, 79, 82, 92

9, 32, 39, 58, 54, 44, 60, 79, 82, 92

9, 32, 39, 58, 54, 44, 60, 79, 82, 92

9, 32, 39, 44, 54, 58, 60, 79, 82, 92

9, 32, 39, 44, 58, 54, 60, 79, 82, 92

9, 32, 39, 44, 54, 58, 60, 79, 82, 92

9, 32, 39, 44, 54, 58, 60, 79, 92, 82

9, 32, 39, 44, 54, 58, 60, 79, 82, 92

Заключение Метод быстрой сортировки позволяет существенно сократить количество операций . Например: Все предыдущие методы требовали N 2 операций , где N – количество элементов. Метод быстрой сортировки требует в среднем N*Log 2 N операций . В случае N=100, выигрыш составляет порядка 100 раз .

Заключение

Метод быстрой сортировки позволяет существенно сократить количество операций .

Например: Все предыдущие методы требовали N 2 операций , где N – количество элементов.

Метод быстрой сортировки требует в среднем N*Log 2 N операций .

В случае N=100, выигрыш составляет порядка 100 раз .

-80%
Курсы дополнительного образования

Основы HTML

Продолжительность 72 часа
Документ: Cвидетельство о прохождении курса
4000 руб.
800 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Обработка одномерных массивов (сортировка) (951.78 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт

Учителю!
Огромная база учебных материалов на каждый урок с возможностью удаленного управления
Тесты, видеоуроки, электронные тетради