Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






О т ч е т

 

ЛАБОРАТОРНАЯ РАБОТА № 1

 

ДИСЦИПЛИНА: " Параллельные вычисления"
ТЕМА: " Параллелизм при сортировке массивов"
     

 

Выполнил: студент гр. ЭВМ. Б-81 Зюзин И.Н.
Проверил: Комарцова Л.Г.

 

Дата сдачи (защиты) лабораторной работы: _________  
Результаты сдачи (защиты): Количество рейтинговых баллов   _________
Оценка  
     

 

 

Калуга, 2015 г.

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

Задание: распараллерить этапы сортировки массива одним из известных алгоритмов.

Листинг программы:

public partial class Form1: Form

{

TextBox[] tb = new TextBox[10];

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

 

Label[] lb = new Label[10];

for (int i = 0; i < tb.Length; i++)

{

//создание лейблов

lb[i] = new Label();

lb[i].Location = new System.Drawing.Point(10, 10 + i * 30);

lb[i].Name = " label" + i.ToString();

lb[i].Text = " Число " + (i+1).ToString() + ": ";

lb[i].Size = new System.Drawing.Size(75, 23);

lb[i].TabIndex = i;

Controls.Add(lb[i]);

//создание текст боксов

tb[i] = new TextBox();

tb[i].Location = new System.Drawing.Point(100, 10 + i * 30);

tb[i].Name = " textBox" + i.ToString();

tb[i].Size = new System.Drawing.Size(75, 23);

tb[i].TabIndex = i;

Controls.Add(tb[i]);

}

}

public void Sort(int[] mas, int x, int y)

{

int temp;

for (int i = x; i < y; i++)

{

if (mas[i] > mas[i + 1])

{

temp = mas[i];

mas[i] = mas[i + 1];

mas[i + 1] = temp;

}

}

}

public void Bubble(int[] mas, int x, int y)

{

int temp;

for (int i = x; i < y; i++)

{

for (int j = i + 1; j < y; j++)

{

if (mas[j] < mas[i])

{

temp = mas[i];

mas[i] = mas[j];

mas[j] = temp;

}

}

}

}

public void View(int[] mas, int x, int y, TextBox textbox)

{

string s = " ";

for (int i = x; i < y; i++)

{

s += mas[i].ToString() + " ";

}

textbox.Text = s;

}

private void button1_Click(object sender, EventArgs e)

{

int[] mas = new int[10];

//int temp;

try

{

//чтение значений

for (int i = 0; i < tb.Length; i++)

{

mas[i] = Convert.ToInt32(tb[i].Text);

}

Stopwatch st = new Stopwatch();

st.Start();

//1 шаг - одноразовое перемещение

Sort(mas, 0, mas.Length - 1);

View(mas, 0, mas.Length, textBox11);

//2 шаг - сортировка половинок массива (1 половина)

Bubble(mas, 0, mas.Length / 2);

View(mas, 0, mas.Length / 2, textBox12);

//2 шаг - сортировка половинок массива (2 половина)

Bubble(mas, mas.Length / 2, mas.Length);

View(mas, mas.Length / 2, mas.Length, textBox13);

//сортировка полного масссива пузырём

Bubble(mas, 0, mas.Length);

View(mas, 0, mas.Length, textBox14);

st.Stop();

textBox15.Text = st.ElapsedMilliseconds.ToString();

}

catch (Exception ex)

{ MessageBox.Show(ex.Message.ToString()); }

}

}

Рисунок 1 – Результаты работы программы

<== предыдущая лекция | следующая лекция ==>
Неполная клинико-гематологическая ремиссия | ВВЕДЕНИЕ. Производственной практики
Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.009 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал