Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichka_SI.doc
Скачиваний:
30
Добавлен:
23.02.2015
Размер:
2.05 Mб
Скачать

1 Задача

Дополнительное условие: реализовать простыми включениями.

7 5 1 13 8 4

57

5 1 7

15 7 13

13 8 4

15 7 8 13 4

1 5 7 8 4 13

1 5 7 4 8 13

1 5 4 7 8 13

1 4 5 7 8 13

#include <stdio.h>

#define N 10

// функция обмена

void swap(int * x, int * y)

{

int temp = *x;

*x=*y;

*y=temp;

}

// алгоритм реализованный сортировки - простыми включениями

void vstavka(int arr[])

{

for(int i=1;i<N; i++)

{

int j = i;

while((arr[j]<arr[j-1])&&(j>0))

{

swap(&arr[j],&arr[j-1]);

j--;

}

}

}

void Input(int a[N]);

void Print (int *a, int n);

int main()

{

int a[N];

Input (a);

vstavka(a);

Print(a,N);

return 0;

}

// функция ввода элементов

void Input (int a[N])

{

puts("Input the numbers\n");

for (int i=0;i<N;i++)

{

printf("Input the %d number",i);

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

}

}

// функция вывода на экран

void Print (int *a, int n)

{

puts("Array:");

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

{

printf("%d , ",*(a+i));

}

}

2 Задача

Дополнительное условие: реализовать сортировку простым выбором (линейный выбор с обменом). Выбирается элемент с наименьшим классом и меняют местами с первым элементом.

#include <stdio.h>

#define N 10

// функция обмена

void swap(int * x, int * y)

{

int temp = *x;

*x=*y;

*y=temp;

}

// алгоритм реализованной сортировки – простым выбором

void vybor(int arr[])

{

for(int i=0; i<N; i++)

{

int i_min = i;

int min=arr[i];

for(int j=i; j<N; j++)

if(arr[j]<min)

{

min=arr[j];

i_min=j;

}

swap(&arr[i],&arr[i_min]);

}

}

void Input(int a[N]);

void Print (int *a, int n);

int main()

{

int a[N];

Input (a);

vybor(a);

Print(a,N);

return 0;

}

// функция ввода элементов

void Input (int a[N])

{

puts("Input the numbers\n");

for (int i=0;i<N;i++)

{

printf("Input the %d number",i);

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

}

}

// функция для вывода на экран

void Print (int *a, int n)

{

puts("Array:");

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

{

printf("%d , ",*(a+i));

}

}

3 Задача

Дополнительное условие: реализовать сортировку “пузырьком”. На каждом проходе массива всплывает на самый верх нужный элемент.

7 9 13 8

9 7 13 8

9 13 7 8

9 13 8 7 – “всплывает самый легкий”

#include <stdio.h>

#define N 10

// функция обмена

void swap(int * x, int * y)

{

int temp = *x;

*x=*y;

*y=temp;

}

// алгоритм реализованной сортировки – парный обмен

void puzyrek(int arr[])

{

int flag = 1;

while(flag)

for(int i=0; i<N; i++)

{

flag=0;

for(int j=i+1; j>0; j--)

{

if(arr[j]<arr[j-1])

{

swap(&arr[j],&arr[j-1]);

flag=1;

}

}

}

}

void Input(int a[N]);

void Print (int *a, int n);

int main()

{

int a[N];

Input (a);

puzyrek(a);

Print(a,N);

return 0;

}

// функция ввода элементов

void Input (int a[N])

{

puts("Input the numbers\n");

for (int i=0;i<N;i++)

{

printf("Input the %d number",i);

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

}

}

// функция для вывода на экран

void Print (int *a, int n)

{

puts("Array:");

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

{

printf("%d , ",*(a+i));

}

}

Лабораторная работа №29

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

Цель: закрепление на практике работы с одним из методов быстрой сортировки.

Методические рекомендации: лабораторная работа рассчитана на 2 часа и состоит из анализа одного разобранного задания.

Самостоятельная работа не предусмотрена.

Необходимый уровень знаний:

  • работа с указателями;

  • работа с функциями.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]