Shell排序与分段插入短java

时间:2016-02-19 01:49:01

标签: java arrays sorting segment shellsort

我正在尝试实施Shell Sort。了解Shell Sort将排序分解为分段插入我使用值10,首先将其分为5以开始第一个分段。然后2表示第二个分段,然后1表示最后一个分段。问题在于最后的1分段。数组的第一个元素不会被if语句检查。当使用大小为12的数组时,array [0]和array [10-11]发现自己没有排序。我似乎找不到我的for循环或while循环的正确起点,即分段插入排序。 数组10未分类:10 9 8 7 6 5 4 3 2 1 分类:10 1 2 3 4 5 6 7 8 9 数组12未分类:12 11 10 9 8 7 6 5 4 3 2 1 分类:12 1 2 3 4 5 6 7 8 9 10 11 编辑::我不认为问题在于分割方面。看作排序的最后一段差距是1。 n =大小; h =段;

public int SegmentedInsertionSort(IntegerType[] A, int n, int h)
    {
        IntegerType temp;
        System.out.println("Entered Segmeted InsertionSort");
        for(int -> h+1 to n)
        {
          int j = i -h;
            while( j > 0)
            {
                if (A[j].isBetterThan(A[j+h]))
                {
                System.out.println("Swap");
                temp = A[j+h];
                A[j+h] = A[j];
                A[j] = temp;

                j=j-h;
                }else
                {
                System.out.println("Ever?");
                j = 0;
                }
            }
        System.out.println("Segmenting");       
        }System.out.println("outter loop done"); return h;
    }


    public void ShellSort(IntegerType[] A, int size)
    {
        int H = (size/2);
        System.out.println("Entering Shell Sort");
        while(H > 0)
        {
            SegmentedInsertionSort(A, size, H);
            H = H/2;
        }
    }

0 个答案:

没有答案