2015-04-28 2 views
1

Я пишу программу быстрой сортировки. Часть quicksort включает использование insertionsort, но только сортирует определенный диапазон элементов, поскольку quicksort обрабатывает остальные. Я пытаюсь подражать метод, предусмотренный в моем учебнике, который используетИспользование сортировки вставки для сортировки только части массива

public static void insertionSort(int a[], int left, int right) 

Но я изо всех сил, чтобы выяснить, как левая и правая используются. Вот код без использования сортировки вставок параметры слева и справа:

public static void insertionSort(int a[], int left, int right) { 
    int j; 
    for (int p = 1; p < a.length; p++) { 
     int tmp = a[p]; 
     for(j = p; j > 0 && tmp < a[j - 1]; j--) { 
      a[j] = a[j-1]; 
     } 
     a[j] = tmp; 
    } 
} 

Если бы я добавить левые и правые параметры, чтобы помочь сортировать только часть массива, где бы они применяются?

Спасибо за помощь.

ответ

3

Используйте влево и вправо в течение цикла декларации:

public static void insertionSort(int a[], int left, int right) { 
    int j; 
    for (int p = left; p < right; p++) { 
     int tmp = a[p]; 
     for(j = p; j > 0 && tmp < a[j - 1]; j--) { 
      a[j] = a[j-1]; 
     } 
     a[j] = tmp; 
    } 
} 

Пример ввода: сортировка вставками ({3, 2, 6, 5, 8, 3, 6, 7, 0}, 2, 6)

пример вывода: {3, 2, 3, 5, 6, 8, 6, 7, 0}

редактировать:

В приведенном выше примере, осталось включено и право является исключительным. Если вы хотите включить нужный индекс, измените p < на p < = справа. Имейте в виду, когда вы вызываете метод, начинающийся с нуля, 0. 0.

+0

Я бы объяснил, включены ли исключающие или исключительные права слева и справа и объясняют, являются ли слева и справа индексы на основе нуля или один на основе. – Rainbolt

+1

Спасибо за помощь. Я попробовал это, и была одна небольшая аномалия, с которой я столкнулся, и это не совсем правильно. Вместо p

+0

@ Rainbolt, что хорошо прояснить. Джон, да, это то, что радуга просила меня уточнить. Рад, что ты это понял. – Ryan

Смежные вопросы