Я работаю над заданием для класса, в котором мне нужно использовать сортировку вставки в несортированном массиве, но это не совсем работает.Алгоритмы, которые я использовал для сортировки, меняли все значения на 0 или все на последнее значение (96) с 0 сверху.Код для класса массива
using System;
namespace UnorderedArrayListNamespace
{
public class UnorderedArrayList
{
public int[] list;
protected int next;
// protected int Count;
public UnorderedArrayList()
{
list = new int[100];
next = 0;
}
public void insert(ref int item)
{
list[next] = item;
next++;
}
public void remove(ref int item)
{
if (next == 0)
{
}
else
{
//find value, if it exists
for (int i = 0; i < next; i++)
{
if (item.Equals(list[i]))
{
for (int j = i; j < next; j++) list[j] = list[j + 1];
next--;
break;
}
}
}
}
public void removeAll(ref int item)
{
}
public int[] InsertionSort(ref int item)
{
for (int i = 0; i < list.Length - 1; i++)
{
for (int j = i + 1; j > 0; j--)
{
if (list[j - 1] > list[j])
{
int temp = list[j - 1];
list[j - 1] = list[j];
list[j] = temp;
}
}
}
return list;
}
public void Minmax(ref int item)
{
int min , max;
min = list[0];
max = list[0];
for (int i = 1; i < list.Length; i++)
{
if (min > list[i])
min = list[i];
if (max < list[i])
max = list[i];
}
Console.WriteLine("min:" + min);
Console.WriteLine("max:" + max);
}
public void print()
{
for (int i = 0; i < next; i++)
{
Console.WriteLine(list[i]);
}
Console.WriteLine();
}
}
}
Код для основного класса
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
UnorderedArrayList u = new UnorderedArrayList();
u.print();
int var = 7;
u.insert(ref var);
var = 12;
u.insert(ref var);
var = 5;
u.insert(ref var);
var = 5;
u.insert(ref var);
var = 5;
u.insert(ref var);
var = 96;
u.insert(ref var);
u.print();
var = 5;
u.remove(ref var);
u.print();
u.InsertionSort(ref var);
u.print();
u.Minmax(ref var);
}
}
}
Обновлен для включения всех частей класса Array.Извините, если это слишком долго, это мой первый пост, и я хотел быть тщательным.
по запросу комментария вот назначение:
Измените предоставленный класс UnorderedArrayList следующими способами:
а.метод remove () удаляет элемент из списка, сдвигая элементы списка.Однако, если удаляемый элемент находится в начале списка, а список довольно большой, выполнение этой операции может занять много времени компьютера.Поскольку элементы списка расположены не в определенном порядке, вы можете просто удалить элемент, скопировав последний элемент в списке в позиции удаляемого элемента и уменьшив длину списка.
b.метод remove удаляет только первое вхождение элемента.Добавьте метод removeAll (), который удалит все вхождения данного элемента.
с.добавьте методы min () и max (), которые будут возвращать наименьший и наибольший соответствующие элементы в списке
d.добавьте метод сортировки вставкой, который упорядочит список.
e.написать метод Main (), который тщательно проверяет эти модификации и демонстрирует правильность.