Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_ПВМ.doc
Скачиваний:
3
Добавлен:
24.11.2019
Размер:
2.64 Mб
Скачать

Рекомендуемая литература.

1осн[325-355], 2осн[371-405]

5доп[46-51],6доп[116-126], 8доп[13-16]

Тема 12. Методы сортировки.

Форма проведения: Решение задач.

Задание: Для приведенных вариантов заданий применить различные методы сортировки.

Варианты заданий:

  1. Дан массив A(6, 6). Вывести строки массива по убыванию первых элементов строк.

  2. Дан массив A(6, 6). Вывести столбцы массива по возрастанию максимальных элементов столбцов.

  3. Дан массив A(6, 6). Вывести строки массива по неубыванию последних элементов строк.

  4. Дан массив A(6, 6). Вывести строки массива по невозрастанию минимальных элементов строк.

  5. Дан массив A(6, 6). Вывести столбцы массива по убыванию последних элементов столбцов.

Методические рекомендации по проведению СРСП.

Контрольный пример 1. (Метод пузырька). Упорядочить по неубыванию элементы массива А(100) (рисунок 11).

Контрольный пример 2. (Обменная сортировка). Упорядочить элементы массива А(100) по невозрастанию (рисунок 12).

Контрольный пример 3. (Сортировка по индексам). Упорядочить элементы массива А(100) по неубыванию.

/* пример 1 */

#include <stdio.h>

#include <conio.h>

#define n 100

main()

{ int i, b, pr, k, a[n];

clrscr();

for(i=0; i<n; i++) scanf(“%d”, &a[i]);

pr=k=1;

while (pr==1) {

pr=0;

for(i=0; i<n-k; i++)

if (a[i]>a[i+1]) {

b=a[i];

a[i]=a[i+1];

a[i+1]=b;

pr=1; }

k++; }

for(i=0; i<n; i++)

printf(“%3d”, a[i]);

getch();

return 0;

}

/* пример 2 */

#include <stdio.h>

#include <conio.h>

#define n 100

main()

{ int i, j, b, a[n];

clrscr();

for(i=0; i<n; i++)

scanf(“%d”, &a[i]);

for(i=0; i<n-1; i++)

for(j=i+2; j<n; j++)

if (a[i]<a[j]) {

b=a[i];

a[i]=a[j];

a[j]=b; }

for(i=0; i<n; i++)

printf(“%3d”, a[i]);

getch(); return 0; }

/* пример 3 */

#include <stdio.h>

#include <conio.h>

#define n 100

main()

{

int i, j, b, k, min, a[n];

clrscr();

for(i=0; i<n; i++)

scanf(“%d”, &a[i]);

i=0;

while (i<n-1)

{

min=a[i];

k=i;

for(j=i+1; j<n; j++)

if (a[j]<min)

{

min=a[j];

k=j;

}

b=a[i];

a[i]=a[k];

a[k]=b;

i++;

}

for(i=0; i<n; i++)

printf(“%3d”, a[i]);

getch();

return 0;

}