Мне нужно реализовать код для улучшенной сортировки выбора. Краткое описание того, как это работает: первое значение всегда является текущим максимумом (в порядке убывания), а его индекс помещается в отдельный временный массив, чтобы сохранить максимальный индекс INDEX.Индекс остается во временном списке до тех пор, пока не будет найдено значение, превышающее текущий максимум.Если есть дубликаты, их индекс также добавляется во временный список индексов.После просмотра всего списка, индексы, оставленные во временном списке, должны поменяться местами с первыми несортированными позициями в исходном списке.Первая итерация завершается, и процесс продолжается до сортировки.
The Pseudocode:
A[n]
Queue[n] // Same size as the size of the array
i =0
while i < (n-1)
Rear = 0
Max = A[i]
Queue[Rear] = i
j= i+1
while j<(n)
if Max < A[j]
Max = A[j]
Rear = -1
If Max = A[j]
Rear = Rear + 1
Queue[Rear] = j
//Perform the swapping of values
Front= 0
while (Front <= Rear)
Temp =A[Queue[Front]]
A[Queue[Front]] = A[i]
A[i] = Temp
i = i + 1
Front = Front + 1
приведенный ниже код - это то, что я уже пробовал.
public static void ImprovedSelectionSort(int[] Array)
{
int[] temp = new int[Array.Length];
for (int i = 0; i <= Array.Length; i++)
{
int max = Array[0];
for (int j = 0; j <= Array.Length; j++)
{
if (Array[j] >= max)
max = temp[j];
}
swap(Array, max, i);
}
Не уверен, как преобразовать psuedocode вкод.