Другие предметы, вопрос задал Alt0l , 1 год назад

Помогите с заданием по язику c# сделать нужно в windows forms в Visual Studio, нужно сделать сортування одномерного массива методом Шелла, вот скрин кода сортування вибором но мне нужно ево переделать на сортування методом Шелла и главное шоб рабочее било

Приложения:

Ответы на вопрос

Ответил prefch4
0

Для сортировки одномерного массива методом Шелла в 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;

}

}

Новые вопросы