Помогите с заданием по язику c# сделать нужно в windows forms в Visual Studio, нужно сделать сортування одномерного массива методом Шелла, вот скрин кода сортування вибором но мне нужно ево переделать на сортування методом Шелла и главное шоб рабочее било
Answers & Comments
Для сортировки одномерного массива методом Шелла в C# можно использовать следующий код:
public static void ShellSort(int[] arr)
{
int n = arr.Length;
int gap = n / 2;
while (gap > 0)
{
for (int i = gap; i < n; i++)
{
int temp = arr[i];
int j = i;
while (j >= gap && arr[j - gap] > temp)
{
arr[j] = arr[j - gap];
j -= gap;
}
arr[j] = temp;
}
gap /= 2;
}
}
Этот код сортирует массив arr методом Шелла. В отличие от сортировки выбором, метод Шелла использует последовательность промежутков, которые сначала большие, а затем постепенно уменьшаются до 1, что позволяет ускорить сортировку.
Чтобы использовать этот код в вашем приложении Windows Forms в Visual Studio, вам нужно создать новый метод в вашем классе формы и вызвать его из обработчика события кнопки. Например, вы можете создать метод ShellSortArray:
private void ShellSortArray(int[] arr)
{
int n = arr.Length;
int gap = n / 2;
while (gap > 0)
{
for (int i = gap; i < n; i++)
{
int temp = arr[i];
int j = i;
while (j >= gap && arr[j - gap] > temp)
{
arr[j] = arr[j - gap];
j -= gap;
}
arr[j] = temp;
}
gap /= 2;
}
}