希尔排序与快速排序

mac2022-06-30  84

    public static void shellSort()    {        int h = 1;        while (randomNumbers.length > 3 * h + 1)        {            h = 3 * h + 1;        }        while (h >= 1)        {            for (int i = 0; i < h; i++)            {                // 内部就使用插入排序                for (int j = i, k = j + h; k < randomNumbers.length; j += h, k = j + h)                {                    if (randomNumbers[j] > randomNumbers[j + h])                    {                        for (int k2 = j + h; k2 >= h && randomNumbers[k2 - h] > randomNumbers[k2]; k2--)                        {                            int temp = randomNumbers[k2];                            randomNumbers[k2] = randomNumbers[k2 - h];                            randomNumbers[k2 - h] = temp;                        }                    }                }            }            h = (h - 1) / 3;        }    }    public static void quickSort()    {        quickSort(0, randomNumbers.length - 1);    }    public static void quickSort(int left, int right)    {        if (left >= right)        {            return;        }        else        {            int partition = partitionIt(left, right);            quickSort(left, partition - 1);            quickSort(partition + 1, right);        }    }    public static int partitionIt(int left, int right)    {        int partition = right;        for (int i = left; i < right; i++)        {            if (i > partition && randomNumbers[i] < randomNumbers[partition])            {                int temp = randomNumbers[partition];                randomNumbers[partition] = randomNumbers[i];                randomNumbers[i] = temp;                temp = partition;                partition = i;                i = temp;            }            else if (i < partition && randomNumbers[i] > randomNumbers[partition])            {                int temp = randomNumbers[partition];                randomNumbers[partition] = randomNumbers[i];                randomNumbers[i] = temp;                partition = i;            }        }        return partition;    }

转载于:https://www.cnblogs.com/yinqi/archive/2012/12/06/2805620.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)