Я пытаюсь выполнить 'сортировку вставкой' для массива, созданного из текстового файла.
Первая часть программы читает текстовый файл, присваивает свой контекст строке для имени и целое число для число. Поскольку текстовый файл имеет следующий формат:
100
12345
Jane
Doe
12359
John
Doe
98765
James
Doe
Таким образом, в первой строке текстового файла указывается общее число покупателей в файле. Следующие три строки - это Идентификатор, Имя и Фамилия клиента.
Я застрял в том, как я собираюсь установить 'InsertionSort', чтобы получать данные от переформатированных 'клиентов 'перечислите код, созданный в первых строках.
Я чувствую, что сортировка по вставке будет лучшим выбором для списка клиентов, который у меня есть. Следующее было лучшим примером, который я мог найти, который будет работать лучше всего с кодом. Я застрял, пытаясь заставить эту формулу вытянуть информацию из «списка клиентов» и запустить сортировку.
void insertionSort()
{
int j, temp;
for (int i = 1; i <= arr.Length - 1; i++)
{
temp = arr[i];
j = i - 1;
while (j >= 0 && arr[j] > temp)
{
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
Любая помощь с этим будет принята с благодарностью.
Тем временем Я рассмотрю метод двоичного поиска и посмотрю, что там.
Следующий код - «Программа».
using System;
using System.Collections.Generic;
using System.IO;
namespace ProgramTest
{
public class Program
{
public static void Main(string [] args)
{
//Creates Customers list
List<Customer> customers = new List<Customer>();
string fName, lName;
int id;
//Opens text file
using (StreamReader sr = File.OpenText("customers.txt"))
{
//ignores first line
string data = sr.ReadLine();
//reads data and assigns objects
while ((data = sr.ReadLine()) != null)
{
fName = data;
lName = sr.ReadLine();
id = int.Parse(sr.ReadLine());
//creats customer class list
customers.Add(new Customer() { customerId = id, fName = fName, lName = lName });
int choice;
}
do
{
Console.WriteLine("Main Menu\n");
Console.WriteLine("1. List all Customers");
Console.WriteLine("2. Sort by Customer ID");
Console.WriteLine("3. Search by Customer ID");
Console.WriteLine("4. Exit");
Console.WriteLine();
Console.Write("Enter Choice:");
choice = Convert.ToInt32(Console.ReadLine());
switch (choice)
{
case 1:
listAll();
break;
case 2:
insertionSort();
break;
case 3:
binarySearch();
break;
case 0:
break;
default:
Console.WriteLine("Dont Recognize Input.");
break;
} while (choice != 4);
//display the list as is from text file
void listAll()
{
foreach (var customer in customers)
Console.WriteLine(customer);
}
//sorts list from based on Customer ID lowest to highest
void insertionSort()
{
}
//can search by customer ID
void binarySearch()
{
}
}
}
}
}
Следующий код является классом «Клиент».
using System;
namespace ProgramTest{
{
public class Customer
{
/// First Name String
public string fName { get; set; }
/// Last Mame String
public string lName { get; set; }
/// Customer ID
public int customerId { get; set; }
/// Return String
public override string ToString()
{
//return $"{fName}, {lName}, {customerId.ToString().PadLeft(5, '0')}";
return $"{customerId}: {fName} {lName}";
}
}
}