Я задавал этот вопрос раньше, но мой пост был загроможден целой кучей другого кода и не был четко представлен, поэтому я собираюсь попробовать еще раз.Извините, я новичок здесь
Сортировка оболочки, как я ее написал, работает только иногда.Массив a
- это массив из 100 целых чисел, не отсортированных, inc
- это массив из 4 целых чисел, значениями которых являются интервалы, которые должна использовать сортировка оболочки (они уменьшаются, а окончательное значение всегда равно 1), count
- это массивхранит счетчики для разных прогонов сортировки оболочки, cnt
представляет значение счетчика, которое должно быть обновлено для этого прогона сортировки оболочки.
Когда я запускаю сортировку оболочки несколько раз, только с разными наборами по 4 интервалаиногда сортировка полностью работает.Половина времени, когда массив полностью отсортирован, другая половина времени, когда массив частично отсортирован.
Кто-нибудь может помочь?Заранее спасибо!
public static void shellSort(int[] a, int[] inc, int[] count, int cnt) {
for (int k = 0; k < inc.length; k++) {
for (int i = inc[k], j; i < a.length; i += inc[k]) {
int tmp = a[i];
count[cnt] += 1;
for (j = i - inc[k]; j >= 0; j -= inc[k]) {
if (a[j] <= tmp)
break;
a[j + inc[k]] = a[j];
count[cnt] += 1;
}
a[j + inc[k]] = tmp;
count[cnt] += 1;
}
}
}