Advertisement
Graf_Rav

Untitled

Apr 20th, 2019
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.37 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.IO;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11. using ZedGraph;
  12.  
  13.     public partial class Form1 : Form
  14.     {
  15.         public static IEnumerable<int[]> GetArrays()
  16.         {
  17.             int iterat = 100;
  18.             List<int[]> arrays = new List<int[]>();
  19.             for (int i = 0; i < iterat; i++)
  20.             {
  21.                 string input = File.ReadAllText($"{i}.txt");
  22.                 string[] inputs = input.Split();
  23.                 var a = new List<int>();
  24.                 foreach (var inp in inputs)
  25.                 {
  26.                     if (inp.Length == 0)
  27.                     {
  28.                         continue;
  29.                     }
  30.                     a.Add(int.Parse(inp));
  31.                 }
  32.                 arrays.Add(a.ToArray());
  33.             }
  34.             return arrays;
  35.         }
  36.  
  37.         public static void SaveArrays()
  38.         {
  39.             int minSize = 100;
  40.             int maxSize = 100000;
  41.             int iterat = 100;
  42.             StringBuilder allInput = new StringBuilder();
  43.             for (int i = 0; i < iterat; i++)
  44.             {
  45.                 int[] arr = GenerateArray(minSize + (maxSize - minSize) / (iterat - 1) * i);
  46.                 StringBuilder builder = new StringBuilder();
  47.                 foreach (var a in arr)
  48.                 {
  49.                     builder.Append($"{a} ");
  50.                 }
  51.                 File.WriteAllText($"{i}.txt", builder.ToString());
  52.                 allInput.Append(builder);
  53.                 allInput.Append('\n');
  54.             }
  55.             File.WriteAllText($"AllInput.txt", allInput.ToString());
  56.         }
  57.  
  58.         private static int[] GenerateArray(int size)
  59.         {
  60.             Random rand = new Random();
  61.             int[] arr = new int[size];
  62.             for (int i = 0; i < size; i++)
  63.             {
  64.                 arr[i] = rand.Next(size);
  65.             }
  66.             return arr;
  67.         }
  68.  
  69.         public Form1()
  70.         {
  71.             InitializeComponent();
  72.  
  73.             //Генерация входных данных
  74.             SaveArrays();
  75.  
  76.            
  77.             GraphPane pane = zedGraphControl1.GraphPane;
  78.             pane.CurveList.Clear();
  79.  
  80.             PointPairList list = new PointPairList();
  81.             PointPairList list2 = new PointPairList();
  82.  
  83.  
  84.             List<int> size = new List<int>();
  85.             List<double> time = new List<double>();
  86.             List<int> iter = new List<int>();
  87.  
  88.             foreach (var arr in GetArrays())
  89.             {
  90.                 long before = DateTime.Now.Ticks;
  91.                 int iterations = 0;
  92.                 //ТУТ ИСПОЛЬЗУЕШЬ СОРТИРОВКУ НА МАССИВЕ arr
  93.                 SORT
  94.                 long after = DateTime.Now.Ticks;
  95.                 double secs = (after - before) / 10000000.0;
  96.  
  97.                 list.Add(arr.Length, secs * 30000000);
  98.                 list2.Add(arr.Length, iterations);
  99.  
  100.                 size.Add(arr.Length);
  101.                 time.Add(secs);
  102.                 iter.Add(iterations);
  103.             }
  104.  
  105.             StringBuilder builder1 = new StringBuilder();
  106.             StringBuilder builder2 = new StringBuilder();
  107.             StringBuilder builder3 = new StringBuilder();
  108.  
  109.             foreach (var a in size)
  110.             {
  111.                 builder1.Append($"{a}\n");
  112.             }
  113.             foreach (var a in time)
  114.             {
  115.                 builder2.Append($"{a}\n");
  116.             }
  117.             foreach (var a in iter)
  118.             {
  119.                 builder3.Append($"{a}\n");
  120.             }
  121.  
  122.             File.WriteAllText($"size.txt", builder1.ToString());
  123.             File.WriteAllText($"time.txt", builder2.ToString());
  124.             File.WriteAllText($"iter.txt", builder3.ToString());
  125.  
  126.  
  127.  
  128.             pane.XAxis.Title = new AxisLabel("Размер массива", "Calibry", 18, Color.Black, false, false, false);
  129.             LineItem myCurve = pane.AddCurve("Shell Sort в секундах (x3*10^7)", list, Color.Blue, SymbolType.None);
  130.             LineItem myCurve2 = pane.AddCurve("Shell Sort в итерациях", list2, Color.Red, SymbolType.Diamond);
  131.            
  132.  
  133.             zedGraphControl1.AxisChange();
  134.             zedGraphControl1.Invalidate();
  135.         }
  136.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement