СДлаб1
.pdfПриложение Б
Быстрая сортировка
static void Main(string[] args)
{
Random rand = new Random(); int size = 10;
float[] array = new float[size];
for (int i = 0; i < size; i++)
{
array[i] = rand.Next(-999999, -1) / 1000f;
Console.Write(array[i] + " ");
}
Console.WriteLine();
AlgFS(array);
for (int i = 0; i < size; i++)
{
Console.Write(array[i] + " ");
}
}
static void AlgFS(float[] array, int first = 0, int last = 9)
{
if (last < 0)
last = array.Length - 1; if (first >= last)
return;
int medium = (last - first) / 2 + first; int run = first;
AlgSwap(ref array[first], ref array[medium]); for (int i = first + 1; i <= last; ++i)
{
if (array[i] <= array[first])
{
AlgSwap(ref array[++run], ref array[i]);
}
}
AlgSwap(ref array[first], ref array[run]); AlgFS(array, first, run - 1); AlgFS(array, run + 1, last);
}
static void AlgSwap(ref float fir, ref float sec)
{
float temp = fir; fir = sec;
sec = temp;
}
11
Приложение В
Сортировка расческой
Random rand = new Random(); int size = 10;
float[] array = new float[size]; double factor = 1.2473309;
for (int i = 0; i < size; i++)
{
array[i] = rand.Next(-999999, -1 )/1000f;
Console.Write(array[i] + " ");
}
Console.WriteLine();
int step = size - 1;
while (step >= 1)
{
for (int i = 0; i + step < size; i++)
{
if (array[i] > array[i + step])
{
float temp = array[i]; array[i] = array[i + step]; array[i + step] = temp; }
}
step = (int)(step / factor);
}
for (int i = 0; i < size; i++)
{
Console.Write(array[i] + "”)
12
13