Я столкнулся с проблемой и нуждаюсь в вашем руководстве. В основном мне удалось создать этот метод Bubble Sort. Как я могу изменить это на Gap Sort, который вместо того, чтобы каждый раз сравнивать соседние элементы по списку, сравнивает элементы, которые находятся на расстоянии некоторого числа (i) позиций друг от друга, где (i) - целое число меньше, чем n. Например, первый элемент будет сравниваться с (i + 1) элементом, 2-й элемент с (i + 2) элементом, n-й элемент с (n-i) элементом и т. д. Одна итерация завершается, когда все элементы что можно сравнить, сравнивали. На следующей итерации i уменьшается на некоторое число больше 1, и процесс продолжается до тех пор, пока i не станет меньше 1.
public static void bubbleSort (Comparable[] data, int maxlength){
int position, scan;
Comparable temp;
for (position = maxlength; position >= 1; position--){
for (scan = 0; scan <= position – 1; scan++){
if (data[scan].compareTo(data[scan+1]) > 0){
// Swap the values
temp = data[scan];
data[scan] = data[scan + 1];
data[scan + 1] = temp;
}
}
}
}