Скачиваний:
43
Добавлен:
10.02.2019
Размер:
26.57 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В. И. Ульянова (Ленина)

Кафедра МОЭВМ

отчет

по лабораторной работе №1

по дисциплине «Программирование»

Тема: Обзор стандартной библиотеки

Студент гр.3303

Преподаватель

Санкт-Петербург

2018

Цель работы:

Напишите программу, на вход которой подается массив целых чисел длины 1000.

Программа должна совершать следующие действия:

  • отсортировать массив по невозрастанию модулей элементов с помощью алгоритма "быстрая сортировка" (quick sort), используя при этом функцию стандартной библиотеки

  • посчитать время, за которое будет совершена сортировка, используя при этом функцию стандартной библиотеки

  • вывести отсортированный массив (элементы массива должны быть разделены пробелом)

  • вывести время, за которое была совершена быстрая сортировка

Отсортированный массив, время быстрой сортировки должны быть выведены с новой строки, при этом элементы массива должны быть разделены пробелами.

Ход работы:

Для выполнения поставленной задачи было создан файл “main.c”, содержащий функцию сравнения чисел (компаратор), главную функцию, осуществляющую работу с массивом чисел и выводящую результат.

Файл main.c

Так как в данной задаче будет осуществляться

  • Сортировка;

  • Работа с временем;

  • Ввод / вывод информации на экран,

то для корректного вызова необходимых функций были подключены библиотеки <stdio.h>, <time.h>, <stdlib.h>.

Далее, с помощью директивы препроцессора #define была объявлена константа N длины массива.

Затем была описана функция compare – функция, осуществляющей сравнение двух чисел. Данная функция далее была передана в функцию qsort для сортировки массива чисел. Ниже (на следующей странице) приведено описание данной функции.

int compare(const void * x1, const void * x2){

return ( *(int*)x2 - *(int*)x1 );

}

Далее была описана главная функция main. В начале функции были заведены необходимые переменные:

  • Массив чисел длиной N;

  • Два числа типа long int для работы с тактами процессора.

После этого проводиться считывание N чисел с сохранением их в массив и определяется первое число тактов работы процессора с начала программы.

После этого с помощью qsort была произведена сортировка чисел, записанных в массив, и определение второго числа тактов с начала работы программы.

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

Ниже приведено содержимое файла main.c.

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#define N 1000

int compare(const void * x1, const void * x2){

return ( *(int*)x2 - *(int*)x1 );

}

int main() {

int arr[N];

long int time1;

long int time2;

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

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

}

time1 = clock();

qsort (arr, N, sizeof(int), compare);

time2 = clock();

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

printf("%d ",arr[i]);

}

printf("\n%d",time2-time1);

return 0;

}

Вывод: С помощью функций стандартных библиотек было осуществлено решение поставленной задачи.

Соседние файлы в папке lab1