113 lines
3.0 KiB
C#
113 lines
3.0 KiB
C#
using System;
|
|
|
|
// Реализация АТД Очередь
|
|
public class Queue<T>
|
|
{
|
|
private T[] elements;
|
|
private int front, rear, size, capacity;
|
|
|
|
public Queue(int capacity)
|
|
{
|
|
this.capacity = capacity;
|
|
elements = new T[capacity];
|
|
front = size = 0;
|
|
rear = capacity - 1;
|
|
}
|
|
|
|
public void Enqueue(T item)
|
|
{
|
|
if (size == capacity)
|
|
throw new Exception("Queue is full");
|
|
rear = (rear + 1) % capacity;
|
|
elements[rear] = item;
|
|
size++;
|
|
}
|
|
|
|
public T Dequeue()
|
|
{
|
|
if (size == 0)
|
|
throw new Exception("Queue is empty");
|
|
T item = elements[front];
|
|
front = (front + 1) % capacity;
|
|
size--;
|
|
return item;
|
|
}
|
|
|
|
// Реализация СД Массив
|
|
public static void SelectionSort(int[] array)
|
|
{
|
|
for (int i = 0; i < array.Length - 1; i++)
|
|
{
|
|
int minIndex = i;
|
|
for (int j = i + 1; j < array.Length; j++)
|
|
{
|
|
if (array[j] < array[minIndex])
|
|
{
|
|
minIndex = j;
|
|
}
|
|
}
|
|
if (minIndex != i)
|
|
{
|
|
int temp = array[i];
|
|
array[i] = array[minIndex];
|
|
array[minIndex] = temp;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Быстрая сортировка
|
|
public static void QuickSort(int[] array, int left, int right)
|
|
{
|
|
if (left < right)
|
|
{
|
|
int pivot = Partition(array, left, right);
|
|
QuickSort(array, left, pivot - 1);
|
|
QuickSort(array, pivot + 1, right);
|
|
}
|
|
}
|
|
|
|
private static int Partition(int[] array, int left, int right)
|
|
{
|
|
int pivot = array[right];
|
|
int i = left - 1;
|
|
for (int j = left; j < right; j++)
|
|
{
|
|
if (array[j] < pivot)
|
|
{
|
|
i++;
|
|
int temp = array[i];
|
|
array[i] = array[j];
|
|
array[j] = temp;
|
|
}
|
|
}
|
|
int temp1 = array[i + 1];
|
|
array[i + 1] = array[right];
|
|
array[right] = temp1;
|
|
return i + 1;
|
|
}
|
|
|
|
public static void Main()
|
|
{
|
|
int[] array = { 64, 34, 25, 12, 22, 11, 90 };
|
|
|
|
// Сортировка выбором
|
|
Console.WriteLine("Before selection sort:");
|
|
foreach (var item in array) Console.Write(item + " ");
|
|
SelectionSort(array);
|
|
Console.WriteLine("\n\nAfter selection sort:");
|
|
foreach (var item in array) Console.Write(item + " ");
|
|
|
|
// Быстрая сортировка
|
|
Console.WriteLine("\n\nBefore quick sort:");
|
|
foreach (var item in array) Console.Write(item + " ");
|
|
QuickSort(array, 0, array.Length - 1);
|
|
Console.WriteLine("\n\nAfter quick sort:");
|
|
foreach (var item in array) Console.Write(item + " ");
|
|
|
|
// Использование Очереди
|
|
Queue<int> queue = new Queue<int>(5);
|
|
queue.Enqueue(10);
|
|
queue.Enqueue(20);
|
|
queue.Dequeue();
|
|
}
|
|
} |