Составить консольное приложение, осуществляющее сортировку вставками - 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();
    }
    }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы