2016-09-21 118 views
-4

这里是我试图解决的问题....搜索和分类


壳牌排序是冒泡排序的变型。除了比较相邻的值之外,Shell排序还会根据二分搜索调整一个概念,以确定在进行任何交换之前比较哪个值的“间隙”。在 第一遍中,间隙是数组大小的一半。对于随后的每次通过,间隙大小减半。对于最后一次传球,间隙大小为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]