Реализация нескольких типов сортировок и вывод результата - 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);
        }
 
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы