Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
О т ч е т
ЛАБОРАТОРНАЯ РАБОТА № 1
Калуга, 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 – Результаты работы программы
|