|
@@ -63,44 +63,44 @@ namespace SORTER
|
|
|
|
|
|
if (ordering == false)
|
|
|
{
|
|
|
- using (StreamWriter sw = new StreamWriter(pathCopy, false))
|
|
|
+ while (arraySorted.Count < arrayCopy.Length)
|
|
|
{
|
|
|
- while (arraySorted.Count < 100)
|
|
|
+ for (int i = 0; i < arrayCopy.Length; ++i)
|
|
|
{
|
|
|
- for (int i = 0; i < arrayCopy.Length; ++i)
|
|
|
+ if (max <= arrayCopy[i] && arrayCopy[i] != 100)
|
|
|
{
|
|
|
- if (max <= arrayCopy[i] && arrayCopy[i] != 100)
|
|
|
- {
|
|
|
- max = arrayCopy[i];
|
|
|
- index = i;
|
|
|
- }
|
|
|
+ max = arrayCopy[i];
|
|
|
+ index = i;
|
|
|
}
|
|
|
- arrayCopy[index] = 100;
|
|
|
- arraySorted.Add(max);
|
|
|
- sw.Write(max + " ");
|
|
|
- max = int.MinValue;
|
|
|
}
|
|
|
+ arrayCopy[index] = 100;
|
|
|
+ arraySorted.Add(max);
|
|
|
+ max = int.MinValue;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- using (StreamWriter sw = new StreamWriter(pathCopy, false))
|
|
|
+ while (arraySorted.Count < arrayCopy.Length)
|
|
|
{
|
|
|
- while (arraySorted.Count < 100)
|
|
|
+ for (int i = 0; i < arrayCopy.Length; ++i)
|
|
|
{
|
|
|
- for (int i = 0; i < arrayCopy.Length; ++i)
|
|
|
+ if (min >= arrayCopy[i] && arrayCopy[i] != 100)
|
|
|
{
|
|
|
- if (min >= arrayCopy[i] && arrayCopy[i] != 100)
|
|
|
- {
|
|
|
- min = arrayCopy[i];
|
|
|
- index = i;
|
|
|
- }
|
|
|
+ min = arrayCopy[i];
|
|
|
+ index = i;
|
|
|
}
|
|
|
- arrayCopy[index] = 100;
|
|
|
- arraySorted.Add(min);
|
|
|
- sw.Write(min + " ");
|
|
|
- min = int.MaxValue;
|
|
|
}
|
|
|
+ arrayCopy[index] = 100;
|
|
|
+ arraySorted.Add(min);
|
|
|
+ min = int.MaxValue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ using (StreamWriter sw = new StreamWriter(pathCopy, false))
|
|
|
+ {
|
|
|
+ for (int i = 0; i < arraySorted.Count; ++i)
|
|
|
+ {
|
|
|
+ sw.Write(arraySorted[i] + " ");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -112,46 +112,54 @@ namespace SORTER
|
|
|
|
|
|
void methodMinMax(bool? ordering)
|
|
|
{
|
|
|
+
|
|
|
+ int[] arrayCopy = new int[array.Length];
|
|
|
+
|
|
|
+ for (int i = 0; i < arrayCopy.Length; ++i)
|
|
|
+ {
|
|
|
+ arrayCopy[i] = array[i];
|
|
|
+ }
|
|
|
+
|
|
|
minMaxTime = new Stopwatch();
|
|
|
minMaxTime.Start();
|
|
|
|
|
|
if(ordering == false)
|
|
|
{
|
|
|
- for (int i = 0; i < array.Length - 1; ++i)
|
|
|
+ for (int i = 0; i < arrayCopy.Length - 1; ++i)
|
|
|
{
|
|
|
int max = i;
|
|
|
|
|
|
- for (int j = i + 1; j < array.Length; ++j)
|
|
|
+ for (int j = i + 1; j < arrayCopy.Length; ++j)
|
|
|
{
|
|
|
- if (array[j].CompareTo(array[max]) > 0)
|
|
|
+ if (arrayCopy[j].CompareTo(arrayCopy[max]) > 0)
|
|
|
{
|
|
|
max = j;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
int temp = array[i];
|
|
|
- array[i] = array[max];
|
|
|
- array[max] = temp;
|
|
|
+ arrayCopy[i] = array[max];
|
|
|
+ arrayCopy[max] = temp;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- for (int i = 0; i < array.Length - 1; ++i)
|
|
|
+ for (int i = 0; i < arrayCopy.Length - 1; ++i)
|
|
|
{
|
|
|
int max = i;
|
|
|
|
|
|
- for (int j = i + 1; j < array.Length; ++j)
|
|
|
+ for (int j = i + 1; j < arrayCopy.Length; ++j)
|
|
|
{
|
|
|
- if (array[j].CompareTo(array[max]) < 0)
|
|
|
+ if (arrayCopy[j].CompareTo(arrayCopy[max]) < 0)
|
|
|
{
|
|
|
max = j;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- int temp = array[i];
|
|
|
- array[i] = array[max];
|
|
|
- array[max] = temp;
|
|
|
+ int temp = arrayCopy[i];
|
|
|
+ arrayCopy[i] = arrayCopy[max];
|
|
|
+ arrayCopy[max] = temp;
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -166,9 +174,9 @@ namespace SORTER
|
|
|
|
|
|
using (StreamWriter sw = new StreamWriter(pathCopy, false))
|
|
|
{
|
|
|
- for (int i = 0; i < array.Length; ++i)
|
|
|
+ for (int i = 0; i < arrayCopy.Length; ++i)
|
|
|
{
|
|
|
- sw.Write(array[i] + " ");
|
|
|
+ sw.Write(arrayCopy[i] + " ");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -176,6 +184,14 @@ namespace SORTER
|
|
|
|
|
|
void BubbleSort(bool? ordering)
|
|
|
{
|
|
|
+
|
|
|
+ int[] arrayCopy = new int[array.Length];
|
|
|
+
|
|
|
+ for (int i = 0; i < arrayCopy.Length; ++i)
|
|
|
+ {
|
|
|
+ arrayCopy[i] = array[i];
|
|
|
+ }
|
|
|
+
|
|
|
int temp;
|
|
|
|
|
|
bubleTime = new Stopwatch();
|
|
@@ -183,30 +199,30 @@ namespace SORTER
|
|
|
|
|
|
if (ordering == false)
|
|
|
{
|
|
|
- for (int i = 0; i < array.Length - 1; i++)
|
|
|
+ for (int i = 0; i < arrayCopy.Length - 1; i++)
|
|
|
{
|
|
|
- for (int j = 0; j < array.Length - i - 1; j++)
|
|
|
+ for (int j = 0; j < arrayCopy.Length - i - 1; j++)
|
|
|
{
|
|
|
- if (array[j + 1] > array[j])
|
|
|
+ if (arrayCopy[j + 1] > arrayCopy[j])
|
|
|
{
|
|
|
- temp = array[j + 1];
|
|
|
- array[j + 1] = array[j];
|
|
|
- array[j] = temp;
|
|
|
+ temp = arrayCopy[j + 1];
|
|
|
+ arrayCopy[j + 1] = arrayCopy[j];
|
|
|
+ arrayCopy[j] = temp;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- for (int i = 0; i < array.Length - 1; i++)
|
|
|
+ for (int i = 0; i < arrayCopy.Length - 1; i++)
|
|
|
{
|
|
|
- for (int j = 0; j < array.Length - i - 1; j++)
|
|
|
+ for (int j = 0; j < arrayCopy.Length - i - 1; j++)
|
|
|
{
|
|
|
- if (array[j + 1] < array[j])
|
|
|
+ if (arrayCopy[j + 1] < arrayCopy[j])
|
|
|
{
|
|
|
- temp = array[j + 1];
|
|
|
- array[j + 1] = array[j];
|
|
|
- array[j] = temp;
|
|
|
+ temp = arrayCopy[j + 1];
|
|
|
+ arrayCopy[j + 1] = arrayCopy[j];
|
|
|
+ arrayCopy[j] = temp;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -222,9 +238,9 @@ namespace SORTER
|
|
|
|
|
|
using (StreamWriter sw = new StreamWriter(pathCopy, false))
|
|
|
{
|
|
|
- for (int i = 0; i < array.Length; ++i)
|
|
|
+ for (int i = 0; i < arrayCopy.Length; ++i)
|
|
|
{
|
|
|
- sw.Write(array[i] + " ");
|
|
|
+ sw.Write(arrayCopy[i] + " ");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -233,6 +249,13 @@ namespace SORTER
|
|
|
void ShuttleSort(bool? ordering)
|
|
|
{
|
|
|
|
|
|
+ int[] arrayCopy = new int[array.Length];
|
|
|
+
|
|
|
+ for (int i = 0; i < arrayCopy.Length; ++i)
|
|
|
+ {
|
|
|
+ arrayCopy[i] = array[i];
|
|
|
+ }
|
|
|
+
|
|
|
int temp;
|
|
|
|
|
|
shuttleTime = new Stopwatch();
|
|
@@ -240,20 +263,20 @@ namespace SORTER
|
|
|
|
|
|
if(ordering == false)
|
|
|
{
|
|
|
- for (int i = 1; i < array.Length; i++)
|
|
|
+ for (int i = 1; i < arrayCopy.Length; i++)
|
|
|
{
|
|
|
- if (array[i] < array[i - 1])
|
|
|
+ if (arrayCopy[i] > arrayCopy[i - 1])
|
|
|
{
|
|
|
- temp = array[i];
|
|
|
- array[i] = array[i - 1];
|
|
|
- array[i - 1] = temp;
|
|
|
+ temp = arrayCopy[i];
|
|
|
+ arrayCopy[i] = arrayCopy[i - 1];
|
|
|
+ arrayCopy[i - 1] = temp;
|
|
|
for (int j = i - 1; (j - 1) >= 0; j--)
|
|
|
{
|
|
|
- if (array[j] < array[j - 1])
|
|
|
+ if (arrayCopy[j] > arrayCopy[j - 1])
|
|
|
{
|
|
|
- temp = array[j];
|
|
|
- array[j] = array[j - 1];
|
|
|
- array[j - 1] = temp;
|
|
|
+ temp = arrayCopy[j];
|
|
|
+ arrayCopy[j] = arrayCopy[j - 1];
|
|
|
+ arrayCopy[j - 1] = temp;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -265,20 +288,20 @@ namespace SORTER
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- for (int i = 1; i < array.Length; i++)
|
|
|
+ for (int i = 1; i < arrayCopy.Length; i++)
|
|
|
{
|
|
|
- if (array[i] > array[i - 1])
|
|
|
+ if (arrayCopy[i] < arrayCopy[i - 1])
|
|
|
{
|
|
|
- temp = array[i];
|
|
|
- array[i] = array[i - 1];
|
|
|
- array[i - 1] = temp;
|
|
|
+ temp = arrayCopy[i];
|
|
|
+ arrayCopy[i] = arrayCopy[i - 1];
|
|
|
+ arrayCopy[i - 1] = temp;
|
|
|
for (int j = i - 1; (j - 1) >= 0; j--)
|
|
|
{
|
|
|
- if (array[j] > array[j - 1])
|
|
|
+ if (arrayCopy[j] < arrayCopy[j - 1])
|
|
|
{
|
|
|
- temp = array[j];
|
|
|
- array[j] = array[j - 1];
|
|
|
- array[j - 1] = temp;
|
|
|
+ temp = arrayCopy[j];
|
|
|
+ arrayCopy[j] = arrayCopy[j - 1];
|
|
|
+ arrayCopy[j - 1] = temp;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -299,9 +322,9 @@ namespace SORTER
|
|
|
|
|
|
using (StreamWriter sw = new StreamWriter(pathCopy, false))
|
|
|
{
|
|
|
- for (int i = 0; i < array.Length; ++i)
|
|
|
+ for (int i = 0; i < arrayCopy.Length; ++i)
|
|
|
{
|
|
|
- sw.Write(array[i] + " ");
|
|
|
+ sw.Write(arrayCopy[i] + " ");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -310,6 +333,13 @@ namespace SORTER
|
|
|
void InsertionSort(bool? ordering)
|
|
|
{
|
|
|
|
|
|
+ int[] arrayCopy = new int[array.Length];
|
|
|
+
|
|
|
+ for (int i = 0; i < arrayCopy.Length; ++i)
|
|
|
+ {
|
|
|
+ arrayCopy[i] = array[i];
|
|
|
+ }
|
|
|
+
|
|
|
int index, temp;
|
|
|
|
|
|
insertionTime = new Stopwatch();
|
|
@@ -317,38 +347,38 @@ namespace SORTER
|
|
|
|
|
|
if (ordering == false)
|
|
|
{
|
|
|
- for (int i = 0; i < array.Length; ++i)
|
|
|
+ for (int i = 0; i < arrayCopy.Length; ++i)
|
|
|
{
|
|
|
index = i;
|
|
|
- temp = array[i];
|
|
|
- for (int j = i + 1; j < array.Length; ++j)
|
|
|
+ temp = arrayCopy[i];
|
|
|
+ for (int j = i + 1; j < arrayCopy.Length; ++j)
|
|
|
{
|
|
|
- if (array[j] > temp)
|
|
|
+ if (arrayCopy[j] > temp)
|
|
|
{
|
|
|
index = j;
|
|
|
- temp = array[j];
|
|
|
+ temp = arrayCopy[j];
|
|
|
}
|
|
|
}
|
|
|
- array[index] = array[i];
|
|
|
- array[i] = temp;
|
|
|
+ arrayCopy[index] = arrayCopy[i];
|
|
|
+ arrayCopy[i] = temp;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- for (int i = 0; i < array.Length; ++i)
|
|
|
+ for (int i = 0; i < arrayCopy.Length; ++i)
|
|
|
{
|
|
|
index = i;
|
|
|
- temp = array[i];
|
|
|
- for (int j = i + 1; j < array.Length; ++j)
|
|
|
+ temp = arrayCopy[i];
|
|
|
+ for (int j = i + 1; j < arrayCopy.Length; ++j)
|
|
|
{
|
|
|
- if (array[j] < temp)
|
|
|
+ if (arrayCopy[j] < temp)
|
|
|
{
|
|
|
index = j;
|
|
|
- temp = array[j];
|
|
|
+ temp = arrayCopy[j];
|
|
|
}
|
|
|
}
|
|
|
- array[index] = array[i];
|
|
|
- array[i] = temp;
|
|
|
+ arrayCopy[index] = arrayCopy[i];
|
|
|
+ arrayCopy[i] = temp;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -362,9 +392,9 @@ namespace SORTER
|
|
|
|
|
|
using (StreamWriter sw = new StreamWriter(pathCopy, false))
|
|
|
{
|
|
|
- for (int i = 0; i < array.Length; ++i)
|
|
|
+ for (int i = 0; i < arrayCopy.Length; ++i)
|
|
|
{
|
|
|
- sw.Write(array[i] + " ");
|
|
|
+ sw.Write(arrayCopy[i] + " ");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -411,14 +441,22 @@ namespace SORTER
|
|
|
|
|
|
using (StreamReader sr = new StreamReader(OPF.FileName))
|
|
|
{
|
|
|
- string str = sr.ReadToEnd().Trim();
|
|
|
- string[] arrayStr = str.Split(" ");
|
|
|
+ try
|
|
|
+ {
|
|
|
+ string str = sr.ReadToEnd().Trim();
|
|
|
+ str = str.Replace("\n", " ");
|
|
|
+ string[] arrayStr = str.Split(" ");
|
|
|
|
|
|
- array = new int[arrayStr.Length];
|
|
|
+ array = new int[arrayStr.Length];
|
|
|
|
|
|
- for (int i = 0; i < arrayStr.Length; ++i)
|
|
|
+ for (int i = 0; i < arrayStr.Length; ++i)
|
|
|
+ {
|
|
|
+ array[i] = Convert.ToInt32(arrayStr[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch
|
|
|
{
|
|
|
- array[i] = Convert.ToInt32(arrayStr[i]);
|
|
|
+ MessageBox.Show("Файл пустой или элементы разделены не пробелами");
|
|
|
}
|
|
|
}
|
|
|
}
|