Реализация нескольких типов сортировок и вывод результата - C#
Формулировка задачи:
Задание: Вывести массивы в Datagridview
1. 1 столбец:исходный массив(реализовано);
2. 2 столбец сортировка методом пузырька(реализовано);
3. 3 столбец сортировка методом хоара (я не понимаю как использовать эту сортировку, все перебрал);
4. 1 столбец выделение максимального элемента красным минимального зеленым;
5. 2 столбец выделение первой половины градиентом серого а вторую красного;
6. Вне datagridview сделать время сортировки пузырька и хоара и сравнить;
вот код:
прошу помочь так как ещё плохо разбераюсь
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication8
{
public partial class Form4 : Form
{
int[] a = new int[16];
public Form4()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int i;
Random rnd = new Random();
dataGridView1.ColumnCount = a.Length;
for(i=0;i<a.Length;i++)
{
a[i]=rnd.Next(-30,30);
dataGridView1.Invalidate();
dataGridView1.Columns[0].Name = "";
dataGridView1.Rows.Add();
dataGridView1[0, i].Value = a[i];
}
int temp;
for(i=0;i<a.Length;i++)
{
for(int j=i+1;j<a.Length;j++)
{
if(a[i]>a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
dataGridView1[1, i].Value = a[i];
}
}
}
}
4. дополнение: остальные ячейки сделать именно в 1 столбце полупрозрачными
Ап! Срочно пожалуйста помогите. Я бы писал бы сам но вообще не понимаю дальше с чего начать
Прошу помочь дальше
3. связанное с хоаром реализовано (правильно ли реализовал?)
прошу помочь сделать остальные пункты очень
обновленный код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication8
{
public partial class Form4 : Form
{
int[] a = new int[16];
public Form4()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int i;
Random rnd = new Random();
dataGridView1.ColumnCount = a.Length;
for (i = 0; i < a.Length; i++)
{
a[i] = rnd.Next(-30, 30);
dataGridView1.Invalidate();
dataGridView1.Columns[0].Name = "";
dataGridView1.Rows.Add();
dataGridView1[0, i].Value = a[i];
}
int temp;
for (i = 0; i < a.Length; i++)
{
for (int j = i + 1; j < a.Length; j++)
{
if (a[i] > a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
dataGridView1[1, i].Value = a[i];
}
for (i = 0; i < a.Length; i++)
{
Quicksort.sort(a, 0, a.Length - 1);
dataGridView1[2, i].Value = a[i];
}
}
}
class Quicksort
{
public static void sort(int[] a, int first, int last)
{
int p = a[(last - first) / 2 + first];
int temp;
int i = first, j = last;
while (i <= j)
{
while (a[i] < p && i <= last) ++i;
while (a[j] > p && j >= first) --j;
if (i <= j)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
++i; --j;
}
}
if (j > first) sort(a, first, j);
if (i < last) sort(a, i, last);
}
}
}Решение задачи: «Реализация нескольких типов сортировок и вывод результата»
textual
Листинг программы
public partial class Form1 : Form
{
int[] massiv = new int[8] { 1, 24, 10, 12, 3, 6, 2, 18 };
public Form1()
{
InitializeComponent();
int[] sortTue = new int[8];
int[] sortONE = new int[8];
for (int i = 0; i < massiv.Length; i++)
{
sortONE[i] = massiv[i];
sortTue[i] = massiv[i];
}
int temp = new int();
for (int i = 0; i < sortONE.Length-1; i++)
{
for (int j = i+1; j < sortONE.Length; j++)
{
if (sortONE[i] > sortONE[j])
{
temp = sortONE[i];
sortONE[i] = sortONE[j];
sortONE[j]=temp;
}
}
}
sorting(sortTue, 0, sortTue.Length - 1);
int maxMass = massiv.Max();
int minMass = massiv.Min();
double x = sortONE.Length / 2;
int midelindex = (int)Math.Round(x);
for (int i = 0; i < sortONE.Length; i++)
{
dataGridView1.Rows.Add(massiv[i], sortONE[i], sortTue[i]);
if ((int)dataGridView1.Rows[i].Cells[0].Value==maxMass)
{
dataGridView1.Rows[i].Cells[0].Style.BackColor = Color.Red;
}
if ((int)dataGridView1.Rows[i].Cells[0].Value == minMass)
{
dataGridView1.Rows[i].Cells[0].Style.BackColor = Color.Green;
}
if (i< midelindex)
{
dataGridView1.Rows[i].Cells[1].Style.SelectionBackColor = Color.Gray;
}
else
{
dataGridView1.Rows[i].Cells[1].Style.SelectionBackColor = Color.Red;
}
}
}
public static void sorting(int[] arr, int first, int last)
{
int p = arr[(last - first) / 2 + first];
int temp;
int i = first, j = last;
while (i <= j)
{
while (arr[i] < p && i <= last) ++i;
while (arr[j] > p && j >= first) --j;
if (i <= j)
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
++i; --j;
}
}
if (j > first) sorting(arr, first, j);
if (i < last) sorting(arr, i, last);
}
}