2016-09-21 2 views
-4

Вот проблема, которую я пытаюсь решить ....Поиск и сортировка


Шелл рода является изменение пузырьковой сортировки. Вместо сравнения смежных значений , сортировка оболочки адаптирует концепцию из бинарного поиска, чтобы определить «пробел» , по которому сравниваются значения до того, как произойдет обмен. В первом проходе промежуток составляет половину размера массива. Для каждого последующего прохода размер зазора разрезается пополам. Для окончательного прохода размер зазора равен 1, поэтому это будет так же, как и сортировка пузырьков. Проходы продолжаться до тех пор не свопы не происходит


Вот мой код:

public class Shellsort { 

    protected int[] array= {9,6,8,12,3,1,7}; 
    protected int gap; 


    public Shellsort() { 
     gap=array.length/2; 
     for (int y=0; y<=gap; y++){ 
      for(int a=gap; a<=array.length; a++){ 
       if(array[y]>array[array.length]){ 
        swap(array[y],array[array.length]); 
       } 
       a++; 
       y++; 
      } 
     } 

     public int swap (int x, int z){ 
      x=array[y]; 
      z=array[array.length]; 
      return (z, x); 
     } 

    } 
} 

Это то, что я был в состоянии прийти с, кто-то может порекомендовать мне некоторые советы/вход для отделки этого проблема.

+1

Вашего 'swap' не может работать. – Amadan

ответ

0

массив [array.length] является недопустимым, поскольку индекс начинается с 0. Чтобы получить последний элемент в массиве вы могли бы сделать массив [array.length - 1]

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