Составить консольное приложение, осуществляющее сортировку вставками - C#
Формулировка задачи:
Программа должна считывать данные из файла и сортировать по возрастанию числа, результаты сортировки должна выводить в файл. При этом должна применяться сортировка вставками.
Помогите найти ошибку, программа выводит в файл только нули.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace ConsoleApplication2
{
class Program
{
static int[] readDataFromFile(string filename)
{
Console.WriteLine("Try to reading");
var tempArray = File.ReadAllLines(filename);
Console.WriteLine("ReadAllLines");
var numberArray = new int[tempArray.Length];
for (int i = 0; i < tempArray.Length; i++)
{
Console.WriteLine(tempArray[i]);
}
return numberArray;
}
static void writeDataToFile(int[] array)
{
using (var sw = new StreamWriter("output.txt"))
{
for (int i = 0; i < array.Length; i++)
sw.WriteLine(array[i].ToString());
}
}
static void InsertionSort(int[] array)
{
int N = array.Length;
for (int i = 1; i < N; i++)
{
int newElement = array[i];
int location = i - 1;
while (location >= 0 && array[location] > newElement)
{
array[location + 1] = array[location];
location--;
}
array[location + 1] = newElement;
}
}
static void Main(string[] args)
{
Console.WriteLine("Введите путь к файлу:");
string filename = Console.ReadLine();
var numberArray = readDataFromFile(filename);
InsertionSort(numberArray);
writeDataToFile(numberArray);
Console.ReadLine();
}
}
}Решение задачи: «Составить консольное приложение, осуществляющее сортировку вставками»
textual
Листинг программы
using System;
using System.IO;
using System.Text;
namespace FirstTask
{
class sortObject
{
public int row;
public string content;
public sortObject(string _content)
{
var row = _content.Split(';')[1].Trim();
content = _content;
}
public static void QuickSort(sortObject[] a, int l, int r)
{
sortObject temp;
int x = a[l + (r - l) / 2].row;
int i = l;
int j = r;
while (i <= j)
{
while (a[i].row < x) i++;
while (a[j].row > x) j--;
if (i <= j)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
}
if (i < r)
QuickSort(a, i, r);
if (l < j)
QuickSort(a, l, j);
}
public static void QuickSort(string[] array)
{
var sortObjects = new sortObject[array.Length];
for (int i = 0; i < array.Length; i++)
sortObjects[i] = new sortObject(array[i]);
QuickSort(sortObjects, 0, array.Length - 1);
for (int i = 0; i < sortObjects.Length; i++)
array[i] = sortObjects[i].content;
}
}
static class dataFile
{
public static string[] readData(string filename)
{
var tempArray = File.ReadAllLines(filename);
var sortObjects = new string[tempArray.Length - 1];
for (int i = 1; i < tempArray.Length; i++)
sortObjects[i - 1] = tempArray[i];
return sortObjects;
}
public static void writeData(string filename, string[] sortedArray)
{
using (var sw = new StreamWriter(filename))
{
foreach (string data in sortedArray)
sw.WriteLine(data);
}
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите путь к файлу");
string filename = Console.ReadLine();
var dataToSort = dataFile.readData(filename);
sortObject.QuickSort(dataToSort);
dataFile.writeData("output.txt", dataToSort);
Console.WriteLine("Файл был успешно отсортирован!");
Console.ReadLine();
}
}
}