Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using ZedGraph;
- public partial class Form1 : Form
- {
- public static IEnumerable<int[]> GetArrays()
- {
- int iterat = 100;
- List<int[]> arrays = new List<int[]>();
- for (int i = 0; i < iterat; i++)
- {
- string input = File.ReadAllText($"{i}.txt");
- string[] inputs = input.Split();
- var a = new List<int>();
- foreach (var inp in inputs)
- {
- if (inp.Length == 0)
- {
- continue;
- }
- a.Add(int.Parse(inp));
- }
- arrays.Add(a.ToArray());
- }
- return arrays;
- }
- public static void SaveArrays()
- {
- int minSize = 100;
- int maxSize = 100000;
- int iterat = 100;
- StringBuilder allInput = new StringBuilder();
- for (int i = 0; i < iterat; i++)
- {
- int[] arr = GenerateArray(minSize + (maxSize - minSize) / (iterat - 1) * i);
- StringBuilder builder = new StringBuilder();
- foreach (var a in arr)
- {
- builder.Append($"{a} ");
- }
- File.WriteAllText($"{i}.txt", builder.ToString());
- allInput.Append(builder);
- allInput.Append('\n');
- }
- File.WriteAllText($"AllInput.txt", allInput.ToString());
- }
- private static int[] GenerateArray(int size)
- {
- Random rand = new Random();
- int[] arr = new int[size];
- for (int i = 0; i < size; i++)
- {
- arr[i] = rand.Next(size);
- }
- return arr;
- }
- public Form1()
- {
- InitializeComponent();
- //Генерация входных данных
- SaveArrays();
- GraphPane pane = zedGraphControl1.GraphPane;
- pane.CurveList.Clear();
- PointPairList list = new PointPairList();
- PointPairList list2 = new PointPairList();
- List<int> size = new List<int>();
- List<double> time = new List<double>();
- List<int> iter = new List<int>();
- foreach (var arr in GetArrays())
- {
- long before = DateTime.Now.Ticks;
- int iterations = 0;
- //ТУТ ИСПОЛЬЗУЕШЬ СОРТИРОВКУ НА МАССИВЕ arr
- SORT
- long after = DateTime.Now.Ticks;
- double secs = (after - before) / 10000000.0;
- list.Add(arr.Length, secs * 30000000);
- list2.Add(arr.Length, iterations);
- size.Add(arr.Length);
- time.Add(secs);
- iter.Add(iterations);
- }
- StringBuilder builder1 = new StringBuilder();
- StringBuilder builder2 = new StringBuilder();
- StringBuilder builder3 = new StringBuilder();
- foreach (var a in size)
- {
- builder1.Append($"{a}\n");
- }
- foreach (var a in time)
- {
- builder2.Append($"{a}\n");
- }
- foreach (var a in iter)
- {
- builder3.Append($"{a}\n");
- }
- File.WriteAllText($"size.txt", builder1.ToString());
- File.WriteAllText($"time.txt", builder2.ToString());
- File.WriteAllText($"iter.txt", builder3.ToString());
- pane.XAxis.Title = new AxisLabel("Размер массива", "Calibry", 18, Color.Black, false, false, false);
- LineItem myCurve = pane.AddCurve("Shell Sort в секундах (x3*10^7)", list, Color.Blue, SymbolType.None);
- LineItem myCurve2 = pane.AddCurve("Shell Sort в итерациях", list2, Color.Red, SymbolType.Diamond);
- zedGraphControl1.AxisChange();
- zedGraphControl1.Invalidate();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement