浏览代码

minor fix

eksemum 3 年之前
父节点
当前提交
2503d47aa7

+ 130 - 92
SORTER/MainWindow.xaml.cs

@@ -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("Файл пустой или элементы разделены не пробелами");
                     }
                 }
             }

文件差异内容过多而无法显示
+ 1 - 1
SORTER/Линейная сортировка.txt


文件差异内容过多而无法显示
+ 1 - 1
SORTER/МинМакс.txt


文件差异内容过多而无法显示
+ 1 - 1
SORTER/Пузырьковая сортировка.txt


文件差异内容过多而无法显示
+ 1 - 1
SORTER/Сортировка вставки.txt


文件差异内容过多而无法显示
+ 1 - 1
SORTER/Челночная сортировка.txt


文件差异内容过多而无法显示
+ 2 - 1
SORTER/массив.txt