Помогите с заданием по язику c# сделать нужно в windows forms в Visual Studio, нужно сделать сортування нечетных елементов массива методом Шелла вместо сортування методом вибора (фото з своим кодом добавил)
![](https://st.uroker.com/files/707/70751464c8242f8679c66f885e37de12.jpg)
Ответы
Ответ:
private void ShellSort(int[] arr)
{
int n = arr.Length;
int gap = n / 2;
while (gap > 0)
{
for (int i = gap; i < n; i++)
{
if (i % 2 == 1 && arr[i] < arr[i - gap])
{
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;
}
}
private void button1_Click(object sender, EventArgs e)
{
int[] arr = { 7, 2, 8, 1, 4, 9, 3, 6, 5 };
ShellSort(arr);
foreach (int i in arr)
{
Console.Write(i + " ");
}
}
Объяснение:
Мы используем метод ShellSort, чтобы отсортировать массив arr. Метод ShellSort использует алгоритм Шелла для сортировки элементов. Он проходит по массиву, сравнивая каждый нечетный элемент со своим соседним элементом на расстоянии gap. Если нечетный элемент меньше своего соседнего элемента, то они меняются местами.
Метод button1_Click вызывает ShellSort для сортировки массива arr и выводит результат в консоль.
Вы можете изменить arr на любой другой массив и использовать этот код для сортировки его нечетных элементов методом Шелла.